Merge pull request #68 from tendermint/develop2
genpriv from hash(secret), evc fix in ExecTx
This commit is contained in:
commit
183fa85cae
|
@ -2,6 +2,7 @@ package account
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/tendermint/ed25519"
|
"github.com/tendermint/ed25519"
|
||||||
|
"github.com/tendermint/tendermint/binary"
|
||||||
. "github.com/tendermint/tendermint/common"
|
. "github.com/tendermint/tendermint/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,6 +26,21 @@ func GenPrivAccount() *PrivAccount {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Generates a new account with private key from SHA256 hash of a secret
|
||||||
|
func GenPrivAccountFromSecret(secret []byte) *PrivAccount {
|
||||||
|
privKey32 := binary.BinarySha256(secret)
|
||||||
|
privKeyBytes := new([64]byte)
|
||||||
|
copy(privKeyBytes[:32], privKey32)
|
||||||
|
pubKeyBytes := ed25519.MakePublicKey(privKeyBytes)
|
||||||
|
pubKey := PubKeyEd25519(pubKeyBytes[:])
|
||||||
|
privKey := PrivKeyEd25519(privKeyBytes[:])
|
||||||
|
return &PrivAccount{
|
||||||
|
Address: pubKey.Address(),
|
||||||
|
PubKey: pubKey,
|
||||||
|
PrivKey: privKey,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func GenPrivAccountFromKey(privKeyBytes [64]byte) *PrivAccount {
|
func GenPrivAccountFromKey(privKeyBytes [64]byte) *PrivAccount {
|
||||||
pubKeyBytes := ed25519.MakePublicKey(&privKeyBytes)
|
pubKeyBytes := ed25519.MakePublicKey(&privKeyBytes)
|
||||||
pubKey := PubKeyEd25519(pubKeyBytes[:])
|
pubKey := PubKeyEd25519(pubKeyBytes[:])
|
||||||
|
|
|
@ -434,7 +434,7 @@ func ExecTx(blockCache *BlockCache, tx_ types.Tx, runCall bool, evc events.Firea
|
||||||
txCache.UpdateAccount(caller) // because we adjusted by input above, and bumped nonce maybe.
|
txCache.UpdateAccount(caller) // because we adjusted by input above, and bumped nonce maybe.
|
||||||
txCache.UpdateAccount(callee) // because we adjusted by input above.
|
txCache.UpdateAccount(callee) // because we adjusted by input above.
|
||||||
vmach := vm.NewVM(txCache, params, caller.Address, account.HashSignBytes(tx))
|
vmach := vm.NewVM(txCache, params, caller.Address, account.HashSignBytes(tx))
|
||||||
vmach.SetFireable(_s.evc)
|
vmach.SetFireable(evc)
|
||||||
// NOTE: Call() transfers the value from caller to callee iff call succeeds.
|
// NOTE: Call() transfers the value from caller to callee iff call succeeds.
|
||||||
|
|
||||||
ret, err := vmach.Call(caller, callee, code, tx.Data, value, &gas)
|
ret, err := vmach.Call(caller, callee, code, tx.Data, value, &gas)
|
||||||
|
|
Loading…
Reference in New Issue