return []byte(accountPreFix + name)
}
-func accountCPKey(name string) []byte {
- return []byte(accountCPPreFix + name)
+func accountCPKey(hash [32]byte) []byte {
+ return append([]byte(accountCPPreFix), hash[:]...)
}
// NewManager creates a new account manager
if err != nil {
return nil, err
}
+
return &controlProgram{
AccountID: account.ID,
KeyIndex: idx,
}
func (m *Manager) insertAccountControlProgram(ctx context.Context, progs ...*controlProgram) error {
- var hash []byte
+ var hash [32]byte
for _, prog := range progs {
accountCP, err := json.Marshal(prog)
if err != nil {
return err
}
- sha3pool.Sum256(hash, prog.ControlProgram)
- m.db.Set(accountCPKey(string(hash)), accountCP)
+ sha3pool.Sum256(hash[:], prog.ControlProgram)
+ m.db.Set(accountCPKey(hash), accountCP)
}
return nil
}
result := make([]*accountOutput, 0, len(outs))
cp := controlProgram{}
- var hash []byte
+ var hash [32]byte
for s := range outsByScript {
- sha3pool.Sum256(hash, []byte(s))
- bytes := m.db.Get(accountCPKey(string(hash)))
+ sha3pool.Sum256(hash[:], []byte(s))
+ bytes := m.db.Get(accountCPKey(hash))
if bytes == nil {
continue
}
"math"
"sort"
+ log "github.com/sirupsen/logrus"
+
"github.com/bytom/blockchain/account"
"github.com/bytom/blockchain/query"
"github.com/bytom/errors"
//
// POST /list-accounts
func (bcr *BlockchainReactor) listAccounts(ctx context.Context, in requestQuery) interface{} {
-
- response, _ := bcr.accounts.QueryAll(ctx)
-
+ response, err := bcr.accounts.QueryAll(ctx)
+ if err != nil {
+ log.Errorf("listAccounts: %v", err)
+ }
return response
}
fmt.Printf("xprv:%v\n", xprvAccount1)
} else {
fmt.Printf("xprv unmarshal error:%v\n", xprvAccount1)
+ os.Exit(1)
}
// Build Transaction-Spend_account
fmt.Printf("To build transaction:\n")
buildReqFmt := `
{"actions": [
+ {"type": "spend_account", "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount":20000000, "account_id": "%s"},
{"type": "spend_account", "asset_id": "%s", "amount": %s, "account_id": "%s"},
- {"type": "spend_account", "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount":20000000, "account_id": "%s"},
{"type": "control_account", "asset_id": "%s", "amount": %s, "account_id": "%s"}
]}`
- buildReqStr := fmt.Sprintf(buildReqFmt, args[2], args[4], args[0], args[0], args[2], args[4], args[1])
+ buildReqStr := fmt.Sprintf(buildReqFmt, args[0], args[2], args[4], args[0], args[2], args[4], args[1])
var buildReq blockchain.BuildRequest
err = stdjson.Unmarshal([]byte(buildReqStr), &buildReq)
if err != nil {
fmt.Println(err)
+ os.Exit(1)
}
tpl := make([]txbuilder.Template, 1)
})
if err != nil {
fmt.Printf("sign-transaction error. err:%v\n", err)
- os.Exit(0)
+ os.Exit(1)
}
fmt.Printf("sign tpl:%v\n", tpl[0])
- fmt.Printf("sign tpl's SigningInstructions:%v\n", tpl[0].SigningInstructions[0])
- fmt.Printf("SigningInstructions's SignatureWitnesses:%v\n", tpl[0].SigningInstructions[0].SignatureWitnesses[0])
+ //fmt.Printf("sign tpl's SigningInstructions:%v\n", tpl[0].SigningInstructions[0])
+ //fmt.Printf("SigningInstructions's SignatureWitnesses:%v\n", tpl[0].SigningInstructions[0].SignatureWitnesses[0])
// submit-transaction-Spend_account
var submitResponse interface{}