added init and main functions to script

pull/34/head
obscuren 11 years ago
parent d092d05a31
commit 7cb065489c
  1. 38
      ethereal/ui/library.go

@ -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()
}
}
return "", fmt.Errorf(errs)
mainInput, initInput := ethutil.PreProcess(data)
mainScript, err := compile(mainInput)
if err != nil {
return "", err
}
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…
Cancel
Save