aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ethereal/ui/library.go23
-rw-r--r--utils/compile.go18
2 files changed, 28 insertions, 13 deletions
diff --git a/ethereal/ui/library.go b/ethereal/ui/library.go
index b097ddbb2..537cfa994 100644
--- a/ethereal/ui/library.go
+++ b/ethereal/ui/library.go
@@ -43,8 +43,7 @@ func (lib *EthLib) CreateAndSetPrivKey() (string, string, string, string) {
return mnemonicString, fmt.Sprintf("%x", pair.Address()), fmt.Sprintf("%x", prv), fmt.Sprintf("%x", pub)
}
-func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data string) (string, error) {
- fmt.Println("Create tx")
+func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) {
var hash []byte
var contractCreation bool
if len(recipient) == 0 {
@@ -64,26 +63,24 @@ func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data strin
var tx *ethchain.Transaction
// Compile and assemble the given data
if contractCreation {
- mainInput, initInput := ethutil.PreProcess(data)
- fmt.Println("Precompile done")
- fmt.Println("main", mainInput)
- mainScript, err := utils.Compile(mainInput)
- if err != nil {
- return "", err
- }
- fmt.Println("init", initInput)
- initScript, err := utils.Compile(initInput)
+ // Compile script
+ mainScript, initScript, err := utils.CompileScript(dataStr)
if err != nil {
return "", err
}
tx = ethchain.NewContractCreationTx(value, gas, gasPrice, mainScript, initScript)
} else {
- tx = ethchain.NewTransactionMessage(hash, value, gas, gasPrice, nil)
+ lines := strings.Split(dataStr, "\n")
+ var data []byte
+ for _, line := range lines {
+ data = append(data, ethutil.BigToBytes(ethutil.Big(line), 256)...)
+ }
+
+ tx = ethchain.NewTransactionMessage(hash, value, gas, gasPrice, data)
}
acc := lib.stateManager.GetAddrState(keyPair.Address())
tx.Nonce = acc.Nonce
- //acc.Nonce++
tx.Sign(keyPair.PrivateKey)
lib.txPool.QueueTransaction(tx)
diff --git a/utils/compile.go b/utils/compile.go
index e5ea50ad4..894fc2d09 100644
--- a/utils/compile.go
+++ b/utils/compile.go
@@ -22,3 +22,21 @@ func Compile(script string) ([]byte, error) {
return ethutil.Assemble(asm...), nil
}
+
+func CompileScript(script string) ([]byte, []byte, error) {
+ // Preprocess
+ mainInput, initInput := ethutil.PreProcess(script)
+ // Compile main script
+ mainScript, err := Compile(mainInput)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ // Compile init script
+ initScript, err := Compile(initInput)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ return mainScript, initScript, nil
+}