added init and main functions to script
This commit is contained in:
parent
d092d05a31
commit
7cb065489c
|
@ -44,6 +44,22 @@ func (lib *EthLib) CreateAndSetPrivKey() (string, string, string, string) {
|
|||
return mnemonicString, fmt.Sprintf("%x", pair.Address()), fmt.Sprintf("%x", prv), fmt.Sprintf("%x", pub)
|
||||
}
|
||||
|
||||
// General compiler and preprocessor function
|
||||
func compile(script string) ([]byte, error) {
|
||||
asm, errors := mutan.Compile(strings.NewReader(script), false)
|
||||
if len(errors) > 0 {
|
||||
var errs string
|
||||
for _, er := range errors {
|
||||
if er != nil {
|
||||
errs += er.Error()
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("%v", errs)
|
||||
}
|
||||
|
||||
return ethutil.Assemble(asm...), nil
|
||||
}
|
||||
|
||||
func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data string) (string, error) {
|
||||
var hash []byte
|
||||
var contractCreation bool
|
||||
|
@ -64,19 +80,19 @@ func (lib *EthLib) CreateTx(recipient, valueStr, gasStr, gasPriceStr, data strin
|
|||
var tx *ethchain.Transaction
|
||||
// Compile and assemble the given data
|
||||
if contractCreation {
|
||||
asm, errors := mutan.Compile(strings.NewReader(data), false)
|
||||
if len(errors) > 0 {
|
||||
var errs string
|
||||
for _, er := range errors {
|
||||
if er != nil {
|
||||
errs += er.Error()
|
||||
mainInput, initInput := ethutil.PreProcess(data)
|
||||
mainScript, err := compile(mainInput)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
return "", fmt.Errorf(errs)
|
||||
initScript, err := compile(initInput)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
code := ethutil.Assemble(asm...)
|
||||
tx = ethchain.NewContractCreationTx(value, gasPrice, code)
|
||||
// TODO
|
||||
fmt.Println(initScript)
|
||||
tx = ethchain.NewContractCreationTx(value, gasPrice, mainScript)
|
||||
} else {
|
||||
tx = ethchain.NewTransactionMessage(hash, value, gasPrice, gas, nil)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue