Refactored code

This commit is contained in:
obscuren 2014-04-23 15:54:34 +02:00
parent b962779a13
commit 43f1214f97
2 changed files with 28 additions and 13 deletions

@ -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) 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) { func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) {
fmt.Println("Create tx")
var hash []byte var hash []byte
var contractCreation bool var contractCreation bool
if len(recipient) == 0 { if len(recipient) == 0 {
@ -64,26 +63,24 @@ func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data strin
var tx *ethchain.Transaction var tx *ethchain.Transaction
// Compile and assemble the given data // Compile and assemble the given data
if contractCreation { if contractCreation {
mainInput, initInput := ethutil.PreProcess(data) // Compile script
fmt.Println("Precompile done") mainScript, initScript, err := utils.CompileScript(dataStr)
fmt.Println("main", mainInput)
mainScript, err := utils.Compile(mainInput)
if err != nil {
return "", err
}
fmt.Println("init", initInput)
initScript, err := utils.Compile(initInput)
if err != nil { if err != nil {
return "", err return "", err
} }
tx = ethchain.NewContractCreationTx(value, gas, gasPrice, mainScript, initScript) tx = ethchain.NewContractCreationTx(value, gas, gasPrice, mainScript, initScript)
} else { } 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()) acc := lib.stateManager.GetAddrState(keyPair.Address())
tx.Nonce = acc.Nonce tx.Nonce = acc.Nonce
//acc.Nonce++
tx.Sign(keyPair.PrivateKey) tx.Sign(keyPair.PrivateKey)
lib.txPool.QueueTransaction(tx) lib.txPool.QueueTransaction(tx)

@ -22,3 +22,21 @@ func Compile(script string) ([]byte, error) {
return ethutil.Assemble(asm...), nil 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
}