mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 13:16:42 +00:00
checkpoint commit
This commit is contained in:
parent
a91005076d
commit
ef9b48603f
2 changed files with 39 additions and 6 deletions
|
|
@ -65,6 +65,9 @@ func (a *BlockAccessListTracer) AccessList() *bal.ConstructionBlockAccessList {
|
||||||
|
|
||||||
// TODO: I don't like that AccessList and this do slightly different things,
|
// TODO: I don't like that AccessList and this do slightly different things,
|
||||||
// and that they mutate the access list builder (not apparent in the naming of the methods)
|
// and that they mutate the access list builder (not apparent in the naming of the methods)
|
||||||
|
//
|
||||||
|
// ^ idea: add Finalize() which returns the diff/accesses, also accumulating them in the BAL.
|
||||||
|
// AccessList just returns the constructed BAL.
|
||||||
func (a *BlockAccessListTracer) IdxChanges() (*bal.StateDiff, bal.StateAccesses) {
|
func (a *BlockAccessListTracer) IdxChanges() (*bal.StateDiff, bal.StateAccesses) {
|
||||||
return a.accessListBuilder.FinaliseIdxChanges()
|
return a.accessListBuilder.FinaliseIdxChanges()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -91,16 +91,46 @@ func (c *AccessListBuilder) StorageWrite(address common.Address, key, prevVal, n
|
||||||
acctAccesses.StorageWrite(key, prevVal, newVal)
|
acctAccesses.StorageWrite(key, prevVal, newVal)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *AccessListBuilder) BalanceChange(addr common.Address, prev, cur *uint256.Int) {
|
func (c *AccessListBuilder) BalanceChange(address common.Address, prev, cur *uint256.Int) {
|
||||||
// TODO
|
if _, ok := c.prestates[address]; !ok {
|
||||||
|
c.prestates[address] = &AccountState{}
|
||||||
|
}
|
||||||
|
if c.prestates[address].Balance == nil {
|
||||||
|
c.prestates[address].Balance = prev
|
||||||
|
}
|
||||||
|
if _, ok := c.accessesStack[len(c.accessesStack)-1][address]; !ok {
|
||||||
|
c.accessesStack[len(c.accessesStack)-1][address] = &constructionAccountAccess{}
|
||||||
|
}
|
||||||
|
acctAccesses := c.accessesStack[len(c.accessesStack)-1][address]
|
||||||
|
acctAccesses.BalanceChange(cur)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *AccessListBuilder) CodeChange(addr common.Address, prev, cur []byte) {
|
func (c *AccessListBuilder) CodeChange(address common.Address, prev, cur []byte) {
|
||||||
// TODO
|
if _, ok := c.prestates[address]; !ok {
|
||||||
|
c.prestates[address] = &AccountState{}
|
||||||
|
}
|
||||||
|
if c.prestates[address].Code == nil {
|
||||||
|
c.prestates[address].Code = prev
|
||||||
|
}
|
||||||
|
if _, ok := c.accessesStack[len(c.accessesStack)-1][address]; !ok {
|
||||||
|
c.accessesStack[len(c.accessesStack)-1][address] = &constructionAccountAccess{}
|
||||||
|
}
|
||||||
|
acctAccesses := c.accessesStack[len(c.accessesStack)-1][address]
|
||||||
|
acctAccesses.CodeChange(cur)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *AccessListBuilder) NonceChange(addr common.Address, prev, cur uint64) {
|
func (c *AccessListBuilder) NonceChange(address common.Address, prev, cur uint64) {
|
||||||
// TODO
|
if _, ok := c.prestates[address]; !ok {
|
||||||
|
c.prestates[address] = &AccountState{}
|
||||||
|
}
|
||||||
|
if c.prestates[address].Nonce == nil {
|
||||||
|
c.prestates[address].Nonce = &prev
|
||||||
|
}
|
||||||
|
if _, ok := c.accessesStack[len(c.accessesStack)-1][address]; !ok {
|
||||||
|
c.accessesStack[len(c.accessesStack)-1][address] = &constructionAccountAccess{}
|
||||||
|
}
|
||||||
|
acctAccesses := c.accessesStack[len(c.accessesStack)-1][address]
|
||||||
|
acctAccesses.NonceChange(cur)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *AccessListBuilder) EnterScope() {
|
func (c *AccessListBuilder) EnterScope() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue