nimbus-eth1/nimbus/utils.nim

25 lines
781 B
Nim
Raw Normal View History

2019-02-26 07:04:12 +00:00
import eth/trie/db, eth/[trie, rlp, common], nimcrypto
2018-12-03 10:54:19 +00:00
2019-02-26 11:26:38 +00:00
export nimcrypto.`$`
2018-12-03 10:54:19 +00:00
proc calcRootHash[T](items: openArray[T]): Hash256 =
var tr = initHexaryTrie(newMemoryDB())
for i, t in items:
tr.put(rlp.encode(i).toRange, rlp.encode(t).toRange)
return tr.rootHash
template calcTxRoot*(transactions: openArray[Transaction]): Hash256 =
calcRootHash(transactions)
template calcReceiptRoot*(receipts: openArray[Receipt]): Hash256 =
calcRootHash(receipts)
2019-02-26 07:04:12 +00:00
2019-03-07 15:53:09 +00:00
func keccakHash*(value: openarray[byte]): Hash256 {.inline.} =
2019-02-26 07:04:12 +00:00
keccak256.digest value
func generateAddress*(address: EthAddress, nonce: AccountNonce): EthAddress =
2019-03-07 15:53:09 +00:00
result[0..19] = keccakHash(rlp.encodeList(address, nonce)).data.toOpenArray(12, 31)
2019-02-26 07:04:12 +00:00
func hash*(b: BlockHeader): Hash256 {.inline.} =
rlpHash(b)