Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

contract call and contract creation refactor #252

Merged
merged 12 commits into from
Feb 27, 2019
Prev Previous commit
Next Next commit
refactor incNonce
  • Loading branch information
jangko committed Feb 27, 2019
commit 6caca0e4ad58d0e97567508f71f9395f1a9fa07b
3 changes: 3 additions & 0 deletions nimbus/db/state_db.nim
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,9 @@ proc getNonce*(db: AccountStateDB, address: EthAddress): AccountNonce =
let account = db.getAccount(address)
account.nonce

proc incNonce*(db: AccountStateDB, address: EthAddress) {.inline.} =
db.setNonce(address, db.getNonce(address) + 1)

proc setCode*(db: AccountStateDB, address: EthAddress, code: ByteRange) =
var account = db.getAccount(address)
# TODO: implement JournalDB to store code and storage
Expand Down
2 changes: 1 addition & 1 deletion nimbus/p2p/executor.nim
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ proc processTransaction*(t: Transaction, sender: EthAddress, vmState: BaseVMStat
trace "txHash", rlpHash = t.rlpHash
var db = vmState.accountDb
# Inct nonce:
db.setNonce(sender, db.getNonce(sender) + 1)
db.incNonce(sender)
var transactionFailed = false

#t.dump
Expand Down
10 changes: 5 additions & 5 deletions tests/test_generalstate_json.nim
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ proc testFixtureIndexes(prevStateRoot: Hash256, header: BlockHeader, pre: JsonNo
var readOnly = vmState.readOnlyStateDB
let storageRoot = readOnly.getStorageRoot(transaction.to)

let gas_cost = transaction.gasLimit.u256 * transaction.gasPrice.u256
let gasCost = transaction.gasLimit.u256 * transaction.gasPrice.u256
vmState.mutateStateDB:
db.setNonce(sender, db.getNonce(sender) + 1)
db.subBalance(sender, transaction.value + gas_cost)
db.incNonce(sender)
db.subBalance(sender, transaction.value + gasCost)

if transaction.isContractCreation and transaction.payload.len > 0:
vmState.mutateStateDB:
Expand Down Expand Up @@ -82,7 +82,7 @@ proc testFixtureIndexes(prevStateRoot: Hash256, header: BlockHeader, pre: JsonNo
# that would simplify/combine codepaths
if header.coinbase notin computation.getAccountsForDeletion:
db.subBalance(header.coinbase, gasRefundAmount)
db.addBalance(header.coinbase, gas_cost)
db.addBalance(header.coinbase, gasCost)
db.addBalance(sender, gasRefundAmount)
# TODO: only here does one commit, with some nuance/caveat
else:
Expand All @@ -91,7 +91,7 @@ proc testFixtureIndexes(prevStateRoot: Hash256, header: BlockHeader, pre: JsonNo
db.subBalance(transaction.to, transaction.value)
db.addBalance(sender, transaction.value)
db.setStorageRoot(transaction.to, storageRoot)
db.addBalance(header.coinbase, gas_cost)
db.addBalance(header.coinbase, gasCost)

proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) =
var fixture: JsonNode
Expand Down