本文整理匯總了Golang中github.com/eris-ltd/eris-pm/definitions.Do類的典型用法代碼示例。如果您正苦於以下問題:Golang Do類的具體用法?Golang Do怎麽用?Golang Do使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Do類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: RebondJob
func RebondJob(rebond *definitions.Rebond, do *definitions.Do) (string, error) {
// Process Variables
rebond.Account, _ = util.PreProcess(rebond.Account, do)
rebond.Height, _ = util.PreProcess(rebond.Height, do)
// Use defaults
rebond.Account = useDefault(rebond.Account, do.Package.Account)
// Don't use pubKey if account override
var oldKey string
if rebond.Account != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
logger.Infof("Rebond Transaction =>\t\t%s:%s\n", rebond.Account, rebond.Height)
tx, err := core.Rebond(rebond.Account, rebond.Height)
if err != nil {
logger.Errorf("ERROR =>\n")
return "", err
}
// Don't use pubKey if account override
if rebond.Account != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, rebond.Wait)
}
示例2: SendJob
func SendJob(send *definitions.Send, do *definitions.Do) (string, error) {
// Process Variables
send.Source, _ = util.PreProcess(send.Source, do)
send.Destination, _ = util.PreProcess(send.Destination, do)
send.Amount, _ = util.PreProcess(send.Amount, do)
// Use Default
send.Source = useDefault(send.Source, do.Package.Account)
// Don't use pubKey if account override
var oldKey string
if send.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
logger.Infof("Sending Transaction =>\t\t%s:%s:%s\n", send.Source, send.Destination, send.Amount)
tx, err := core.Send(do.Chain, do.Signer, do.PublicKey, send.Source, send.Destination, send.Amount, send.Nonce)
if err != nil {
logger.Errorf("ERROR =>\n")
return "", err
}
// Don't use pubKey if account override
if send.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, send.Wait)
}
示例3: PermissionJob
func PermissionJob(perm *definitions.Permission, do *definitions.Do) (string, error) {
// Process Variables
perm.Source, _ = util.PreProcess(perm.Source, do)
perm.Action, _ = util.PreProcess(perm.Action, do)
perm.PermissionFlag, _ = util.PreProcess(perm.PermissionFlag, do)
perm.Value, _ = util.PreProcess(perm.Value, do)
perm.Target, _ = util.PreProcess(perm.Target, do)
perm.Role, _ = util.PreProcess(perm.Role, do)
// Set defaults
perm.Source = useDefault(perm.Source, do.Package.Account)
log.Debug("Target: ", perm.Target)
log.Debug("Marmots Deny: ", perm.Role)
log.Debug("Action: ", perm.Action)
// Populate the transaction appropriately
var args []string
switch perm.Action {
case "set_global":
args = []string{perm.PermissionFlag, perm.Value}
case "set_base":
args = []string{perm.Target, perm.PermissionFlag, perm.Value}
case "unset_base":
args = []string{perm.Target, perm.PermissionFlag}
case "add_role", "rm_role":
args = []string{perm.Target, perm.Role}
}
// Don't use pubKey if account override
var oldKey string
if perm.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
arg := fmt.Sprintf("%s:%s", args[0], args[1])
log.WithField(perm.Action, arg).Info("Setting Permissions")
erisNodeClient := client.NewErisNodeClient(do.Chain)
erisKeyClient := keys.NewErisKeyClient(do.Signer)
tx, err := core.Permissions(erisNodeClient, erisKeyClient, do.PublicKey, perm.Source, perm.Nonce, perm.Action, args)
if err != nil {
return util.MintChainErrorHandler(do, err)
}
log.Debug("What are the args returned in transaction: ", tx.PermArgs)
// Don't use pubKey if account override
if perm.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, perm.Wait)
}
示例4: PermissionJob
func PermissionJob(perm *definitions.Permission, do *definitions.Do) (string, error) {
// Process Variables
perm.Source, _ = util.PreProcess(perm.Source, do)
perm.Action, _ = util.PreProcess(perm.Action, do)
perm.PermissionFlag, _ = util.PreProcess(perm.PermissionFlag, do)
perm.Value, _ = util.PreProcess(perm.Value, do)
perm.Target, _ = util.PreProcess(perm.Target, do)
perm.Role, _ = util.PreProcess(perm.Role, do)
// Set defaults
perm.Source = useDefault(perm.Source, do.Package.Account)
// Populate the transaction appropriately
var args []string
switch perm.Action {
case "set_global":
args = []string{perm.PermissionFlag, perm.Value}
case "set_base":
args = []string{perm.Target, perm.PermissionFlag, perm.Value}
case "unset_base":
args = []string{perm.Target, perm.PermissionFlag}
case "add_role", "rm_role":
args = []string{perm.Target, perm.Role}
}
// Don't use pubKey if account override
var oldKey string
if perm.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
logger.Infof("Setting Permissions =>\t\t%s:%v\n", perm.Action, args)
tx, err := core.Permissions(do.Chain, do.Signer, do.PublicKey, perm.Source, perm.Nonce, perm.Action, args)
if err != nil {
logger.Errorf("ERROR =>\n")
return "", err
}
// Don't use pubKey if account override
if perm.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, perm.Wait)
}
示例5: BondJob
func BondJob(bond *definitions.Bond, do *definitions.Do) (string, error) {
// Process Variables
bond.Account, _ = util.PreProcess(bond.Account, do)
bond.Amount, _ = util.PreProcess(bond.Amount, do)
bond.PublicKey, _ = util.PreProcess(bond.PublicKey, do)
// Use Defaults
bond.Account = useDefault(bond.Account, do.Package.Account)
do.PublicKey = useDefault(do.PublicKey, bond.PublicKey)
// Formulate tx
log.WithFields(log.Fields{
"public key": do.PublicKey,
"amount": bond.Amount,
}).Infof("Bond Transaction")
erisNodeClient := client.NewErisNodeClient(do.Chain)
erisKeyClient := keys.NewErisKeyClient(do.Signer)
tx, err := core.Bond(erisNodeClient, erisKeyClient, do.PublicKey, bond.Account, bond.Amount, bond.Nonce)
if err != nil {
return util.MintChainErrorHandler(do, err)
}
// Sign, broadcast, display
return txFinalize(do, tx, bond.Wait)
}
示例6: CallJob
func CallJob(call *definitions.Call, do *definitions.Do) (string, error) {
// Preprocess variables
call.Source, _ = util.PreProcess(call.Source, do)
call.Destination, _ = util.PreProcess(call.Destination, do)
call.Amount, _ = util.PreProcess(call.Amount, do)
call.Nonce, _ = util.PreProcess(call.Nonce, do)
call.Fee, _ = util.PreProcess(call.Fee, do)
call.Gas, _ = util.PreProcess(call.Gas, do)
// Use default
call.Source = useDefault(call.Source, do.Package.Account)
call.Amount = useDefault(call.Amount, do.DefaultAmount)
call.Fee = useDefault(call.Fee, do.DefaultFee)
call.Gas = useDefault(call.Gas, do.DefaultGas)
var err error
call.Data, err = util.ReadAbiFormulateCall(call.Destination, call.Data, do)
if err != nil {
logger.Errorf("Error Formulating Call from ABI.\n")
return "", err
}
// Don't use pubKey if account override
var oldKey string
if call.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
logger.Infof("Calling =>\t\t\t%s:%v\n", call.Destination, call.Data)
tx, err := core.Call(do.Chain, do.Signer, do.PublicKey, call.Source, call.Destination, call.Amount, call.Nonce, call.Gas, call.Fee, call.Data)
if err != nil {
return "", err
}
// Don't use pubKey if account override
if call.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, call.Wait)
}
示例7: registerNameTx
// Runs an individual nametx.
func registerNameTx(name *definitions.RegisterName, do *definitions.Do) (string, error) {
// Process Variables
name.Source, _ = util.PreProcess(name.Source, do)
name.Name, _ = util.PreProcess(name.Name, do)
name.Data, _ = util.PreProcess(name.Data, do)
name.Amount, _ = util.PreProcess(name.Amount, do)
name.Fee, _ = util.PreProcess(name.Fee, do)
// Set Defaults
name.Source = useDefault(name.Source, do.Package.Account)
name.Fee = useDefault(name.Fee, do.DefaultFee)
name.Amount = useDefault(name.Amount, do.DefaultAmount)
// Don't use pubKey if account override
var oldKey string
if name.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
log.WithFields(log.Fields{
"name": name.Name,
"data": name.Data,
"amount": name.Amount,
}).Info("NameReg Transaction")
erisNodeClient := client.NewErisNodeClient(do.Chain)
erisKeyClient := keys.NewErisKeyClient(do.Signer)
tx, err := core.Name(erisNodeClient, erisKeyClient, do.PublicKey, name.Source, name.Amount, name.Nonce, name.Fee, name.Name, name.Data)
if err != nil {
return util.MintChainErrorHandler(do, err)
}
// Don't use pubKey if account override
if name.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, name.Wait)
}
示例8: SendJob
func SendJob(send *definitions.Send, do *definitions.Do) (string, error) {
// Process Variables
send.Source, _ = util.PreProcess(send.Source, do)
send.Destination, _ = util.PreProcess(send.Destination, do)
send.Amount, _ = util.PreProcess(send.Amount, do)
// Use Default
send.Source = useDefault(send.Source, do.Package.Account)
// Don't use pubKey if account override
var oldKey string
if send.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
log.WithFields(log.Fields{
"source": send.Source,
"destination": send.Destination,
"amount": send.Amount,
}).Info("Sending Transaction")
erisNodeClient := client.NewErisNodeClient(do.Chain)
erisKeyClient := keys.NewErisKeyClient(do.Signer)
tx, err := core.Send(erisNodeClient, erisKeyClient, do.PublicKey, send.Source, send.Destination, send.Amount, send.Nonce)
if err != nil {
return util.MintChainErrorHandler(do, err)
}
// Don't use pubKey if account override
if send.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, send.Wait)
}
示例9: GetChainID
// TODO: it is unpreferable to mix static and non-static use of Do
func GetChainID(do *definitions.Do) error {
if do.ChainID == "" {
nodeClient := client.NewErisNodeClient(do.Chain)
_, chainId, _, err := nodeClient.ChainId()
if err != nil {
return err
}
do.ChainID = chainId
log.WithField("=>", do.ChainID).Info("Using ChainID from Node")
}
return nil
}
示例10: RebondJob
func RebondJob(rebond *definitions.Rebond, do *definitions.Do) (string, error) {
// Process Variables
var err error
rebond.Account, err = util.PreProcess(rebond.Account, do)
rebond.Height, err = util.PreProcess(rebond.Height, do)
if err != nil {
return "", err
}
// Use defaults
rebond.Account = useDefault(rebond.Account, do.Package.Account)
// Don't use pubKey if account override
var oldKey string
if rebond.Account != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
log.WithFields(log.Fields{
"account": rebond.Account,
"height": rebond.Height,
}).Info("Rebond Transaction")
tx, err := core.Rebond(rebond.Account, rebond.Height)
if err != nil {
return util.MintChainErrorHandler(do, err)
}
// Don't use pubKey if account override
if rebond.Account != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, rebond.Wait)
}
示例11: registerNameTx
// Runs an individual nametx.
func registerNameTx(name *definitions.RegisterName, do *definitions.Do) (string, error) {
// Process Variables
name.Source, _ = util.PreProcess(name.Source, do)
name.Name, _ = util.PreProcess(name.Name, do)
name.Data, _ = util.PreProcess(name.Data, do)
name.Amount, _ = util.PreProcess(name.Amount, do)
name.Fee, _ = util.PreProcess(name.Fee, do)
// Set Defaults
name.Source = useDefault(name.Source, do.Package.Account)
name.Fee = useDefault(name.Fee, do.DefaultFee)
name.Amount = useDefault(name.Amount, do.DefaultAmount)
// Don't use pubKey if account override
var oldKey string
if name.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// Formulate tx
logger.Infof("NameReg Transaction =>\t\t%s:%s:%s\n", name.Name, name.Data, name.Amount)
tx, err := core.Name(do.Chain, do.Signer, do.PublicKey, name.Source, name.Amount, name.Nonce, name.Fee, name.Name, name.Data)
if err != nil {
logger.Errorf("ERROR =>\n")
return "", err
}
// Don't use pubKey if account override
if name.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
return txFinalize(do, tx, name.Wait)
}
示例12: BondJob
func BondJob(bond *definitions.Bond, do *definitions.Do) (string, error) {
// Process Variables
bond.Account, _ = util.PreProcess(bond.Account, do)
bond.Amount, _ = util.PreProcess(bond.Amount, do)
bond.PublicKey, _ = util.PreProcess(bond.PublicKey, do)
// Use Defaults
bond.Account = useDefault(bond.Account, do.Package.Account)
do.PublicKey = useDefault(do.PublicKey, bond.PublicKey)
// Formulate tx
logger.Infof("Bond Transaction =>\t\t%s:%s\n", do.PublicKey, bond.Amount)
tx, err := core.Bond(do.Chain, do.Signer, do.PublicKey, bond.Account, bond.Amount, bond.Nonce)
if err != nil {
logger.Errorf("ERROR =>\n")
return "", err
}
// Sign, broadcast, display
return txFinalize(do, tx, bond.Wait)
}
示例13: GetChainID
func GetChainID(do *definitions.Do) error {
if do.ChainID == "" {
status, err := ChainStatus("node_info", do)
if err != nil {
return err
}
// Wrangle these returns
type NodeInfo struct {
ChainID string `mapstructure:"chain_id" json:"chain_id"`
}
var ret NodeInfo
err = json.Unmarshal([]byte(status), &ret)
if err != nil {
return err
}
do.ChainID = ret.ChainID
logger.Infof("Using ChainID from Node =>\t%s\n", do.ChainID)
}
return nil
}
示例14: CallJob
func CallJob(call *definitions.Call, do *definitions.Do) (string, []*definitions.Variable, error) {
var err error
var callData string
var callDataArray []string
// Preprocess variables
call.Source, _ = util.PreProcess(call.Source, do)
call.Destination, _ = util.PreProcess(call.Destination, do)
//todo: find a way to call the fallback function here
call.Function, callDataArray, err = util.PreProcessInputData(call.Function, call.Data, do, false)
if err != nil {
return "", make([]*definitions.Variable, 0), err
}
call.Function, _ = util.PreProcess(call.Function, do)
call.Amount, _ = util.PreProcess(call.Amount, do)
call.Nonce, _ = util.PreProcess(call.Nonce, do)
call.Fee, _ = util.PreProcess(call.Fee, do)
call.Gas, _ = util.PreProcess(call.Gas, do)
call.ABI, _ = util.PreProcess(call.ABI, do)
// Use default
call.Source = useDefault(call.Source, do.Package.Account)
call.Amount = useDefault(call.Amount, do.DefaultAmount)
call.Fee = useDefault(call.Fee, do.DefaultFee)
call.Gas = useDefault(call.Gas, do.DefaultGas)
// formulate call
var packedBytes []byte
if call.ABI == "" {
packedBytes, err = util.ReadAbiFormulateCall(call.Destination, call.Function, callDataArray, do)
callData = hex.EncodeToString(packedBytes)
} else {
packedBytes, err = util.ReadAbiFormulateCall(call.ABI, call.Function, callDataArray, do)
callData = hex.EncodeToString(packedBytes)
}
if err != nil {
if call.Function == "()" {
log.Warn("Calling the fallback function")
} else {
var str, err = util.ABIErrorHandler(do, err, call, nil)
return str, make([]*definitions.Variable, 0), err
}
}
// Don't use pubKey if account override
var oldKey string
if call.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
log.WithFields(log.Fields{
"destination": call.Destination,
"function": call.Function,
"data": callData,
}).Info("Calling")
erisNodeClient := client.NewErisNodeClient(do.Chain)
erisKeyClient := keys.NewErisKeyClient(do.Signer)
tx, err := core.Call(erisNodeClient, erisKeyClient, do.PublicKey, call.Source, call.Destination, call.Amount, call.Nonce, call.Gas, call.Fee, callData)
if err != nil {
return "", make([]*definitions.Variable, 0), err
}
// Don't use pubKey if account override
if call.Source != do.Package.Account {
do.PublicKey = oldKey
}
// Sign, broadcast, display
res, err := core.SignAndBroadcast(do.ChainID, erisNodeClient, erisKeyClient, tx, true, true, call.Wait)
if err != nil {
var str, err = util.MintChainErrorHandler(do, err)
return str, make([]*definitions.Variable, 0), err
}
txResult := res.Return
var result string
log.Debug(txResult)
// Formally process the return
if txResult != nil {
log.WithField("=>", result).Debug("Decoding Raw Result")
if call.ABI == "" {
call.Variables, err = util.ReadAndDecodeContractReturn(call.Destination, call.Function, txResult, do)
} else {
call.Variables, err = util.ReadAndDecodeContractReturn(call.ABI, call.Function, txResult, do)
}
if err != nil {
return "", make([]*definitions.Variable, 0), err
}
log.WithField("=>", call.Variables).Debug("call variables:")
result = util.GetReturnValue(call.Variables)
if result != "" {
log.WithField("=>", result).Warn("Return Value")
} else {
log.Debug("No return.")
}
} else {
log.Debug("No return from contract.")
//.........這裏部分代碼省略.........
示例15: DeployJob
func DeployJob(deploy *definitions.Deploy, do *definitions.Do) (string, error) {
// Preprocess variables
deploy.Source, _ = util.PreProcess(deploy.Source, do)
deploy.Contract, _ = util.PreProcess(deploy.Contract, do)
deploy.Amount, _ = util.PreProcess(deploy.Amount, do)
deploy.Nonce, _ = util.PreProcess(deploy.Nonce, do)
deploy.Fee, _ = util.PreProcess(deploy.Fee, do)
deploy.Gas, _ = util.PreProcess(deploy.Gas, do)
// Use default
deploy.Source = useDefault(deploy.Source, do.Package.Account)
deploy.Amount = useDefault(deploy.Amount, do.DefaultAmount)
deploy.Fee = useDefault(deploy.Fee, do.DefaultFee)
deploy.Gas = useDefault(deploy.Gas, do.DefaultGas)
// assemble contract
var p string
if _, err := os.Stat(deploy.Contract); err == nil {
p = deploy.Contract
} else {
p = filepath.Join(do.ContractsPath, deploy.Contract)
}
logger.Debugf("Contract path =>\t\t%s\n", p)
// use the proper compiler
if do.Compiler != "" {
logger.Debugf("Setting compiler path =>\t%s\n", do.Compiler)
if err := setCompiler(do, p); err != nil {
return "", err
}
}
// compile
bytecode, abiSpec, err := compilers.Compile(p)
if err != nil {
return "", err
}
logger.Debugf("Abi spec =>\t\t\t%s\n", string(abiSpec))
contractCode := hex.EncodeToString(bytecode)
// Don't use pubKey if account override
var oldKey string
if deploy.Source != do.Package.Account {
oldKey = do.PublicKey
do.PublicKey = ""
}
// additional data may be sent along with the contract
// these are naively added to the end of the contract code using standard
// mint packing
if deploy.Data != "" {
splitout := strings.Split(deploy.Data, " ")
for _, s := range splitout {
s, _ = util.PreProcess(s, do)
addOns := common.LeftPadString(common.StripHex(common.Coerce2Hex(s)), 64)
logger.Debugf("Contract Code =>\t\t%s\n", contractCode)
logger.Debugf("\tAdditional Data =>\t%s\n", addOns)
contractCode = contractCode + addOns
}
}
// Deploy contract
logger.Infof("Deploying Contract =>\t\t%s:%v\n", deploy.Source, contractCode)
tx, err := core.Call(do.Chain, do.Signer, do.PublicKey, deploy.Source, "", deploy.Amount, deploy.Nonce, deploy.Gas, deploy.Fee, contractCode)
if err != nil {
return "", fmt.Errorf("Error deploying contract %s: %v", p, err)
}
// Sign, broadcast, display
var result string
result, err = deployFinalize(do, tx, deploy.Wait)
// Save ABI
if _, err := os.Stat(do.ABIPath); os.IsNotExist(err) {
if err := os.Mkdir(do.ABIPath, 0775); err != nil {
return "", err
}
}
abiLocation := filepath.Join(do.ABIPath, result)
logger.Debugf("Saving ABI =>\t\t\t%s\n", abiLocation)
if err := ioutil.WriteFile(abiLocation, []byte(abiSpec), 0664); err != nil {
return "", err
}
// Don't use pubKey if account override
if deploy.Source != do.Package.Account {
do.PublicKey = oldKey
}
return result, nil
}