Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into execution-split
Browse files Browse the repository at this point in the history
  • Loading branch information
tsahee committed Jun 28, 2023
2 parents 7ea7072 + f7609ee commit 174034e
Show file tree
Hide file tree
Showing 39 changed files with 591 additions and 39 deletions.
5 changes: 5 additions & 0 deletions .clabot
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"contributors": "https://api.github.com/repos/OffchainLabs/clabot-config/contents/nitro-contributors.json",
"message": "We require contributors to sign our Contributor License Agreement. In order for us to review and merge your code, please sign the linked documents below to get yourself added. https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=b15c81cc-b5ea-42a6-9107-3992526f2898&env=na3&acct=6e152afc-6284-44af-a4c1-d8ef291db402&v=2",
"label": "s"
}
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: CI
run-name: CI triggered from @${{ github.actor }} of ${{ github.head_ref }}

on:
workflow_dispatch:
pull_request:
push:
branches:
- master

jobs:
run-tests:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.19

- name: Test
run: make test
8 changes: 3 additions & 5 deletions arbitrum/apibackend.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func CreateFallbackClient(fallbackClientUrl string, fallbackClientTimeout time.D
var fallbackClient types.FallbackClient
var err error
fallbackClient, err = rpc.Dial(fallbackClientUrl)
if fallbackClient == nil || err != nil {
if err != nil {
return nil, fmt.Errorf("failed creating fallback connection: %w", err)
}
if fallbackClientTimeout != 0 {
Expand Down Expand Up @@ -172,7 +172,7 @@ func (a *APIBackend) SyncProgressMap() map[string]interface{} {
func (a *APIBackend) SyncProgress() ethereum.SyncProgress {
progress := a.SyncProgressMap()

if progress == nil || len(progress) == 0 {
if len(progress) == 0 {
return ethereum.SyncProgress{}
}
return ethereum.SyncProgress{
Expand All @@ -191,7 +191,6 @@ func (a *APIBackend) FeeHistory(
newestBlock rpc.BlockNumber,
rewardPercentiles []float64,
) (*big.Int, [][]*big.Int, []*big.Int, []float64, error) {

if core.GetArbOSSpeedLimitPerSecond == nil {
return nil, nil, nil, nil, errors.New("ArbOS not installed")
}
Expand Down Expand Up @@ -230,7 +229,7 @@ func (a *APIBackend) FeeHistory(

// use the most recent average compute rate for all blocks
// note: while we could query this value for each block, it'd be prohibitively expensive
state, _, err := a.StateAndHeaderByNumber(ctx, rpc.BlockNumber(newestBlock))
state, _, err := a.StateAndHeaderByNumber(ctx, newestBlock)
if err != nil {
return common.Big0, nil, nil, nil, err
}
Expand Down Expand Up @@ -296,7 +295,6 @@ func (a *APIBackend) FeeHistory(
fullnessAnalogue = 1.0
}
gasUsed[block-oldestBlock] = fullnessAnalogue

}
if newestBlock == latestBlock {
basefees[blocks] = basefees[blocks-1] // guess the basefee won't change
Expand Down
6 changes: 2 additions & 4 deletions arbitrum/recordingdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,7 @@ func (db *RecordingKV) Close() error {
return nil
}

func (db *RecordingKV) Release() {
return
}
func (db *RecordingKV) Release() {}

func (db *RecordingKV) GetRecordedEntries() map[common.Hash][]byte {
return db.readDbEntries
Expand Down Expand Up @@ -322,7 +320,7 @@ func (r *RecordingDatabase) GetOrRecreateState(ctx context.Context, header *type
}
err = r.addStateVerify(stateDb, block.Root())
if err != nil {
return nil, fmt.Errorf("failed commiting state for block %d : %w", blockToRecreate, err)
return nil, fmt.Errorf("failed committing state for block %d : %w", blockToRecreate, err)
}
r.dereferenceRoot(lastRoot)
lastRoot = block.Root()
Expand Down
1 change: 1 addition & 0 deletions core/state/snapshot/snapshot_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,7 @@ func TestDiffLayerExternalInvalidationPartialFlatten(t *testing.T) {

// TestPostCapBasicDataAccess tests some functionality regarding capping/flattening.
func TestPostCapBasicDataAccess(t *testing.T) {
t.Skip("Arbitrum: Test fails due to our modifications to Tree.Cap function.")
// setAccount is a helper to construct a random account entry and assign it to
// an account slot in a snapshot
setAccount := func(accKey string) map[common.Hash][]byte {
Expand Down
4 changes: 3 additions & 1 deletion core/state/statedb.go
Original file line number Diff line number Diff line change
Expand Up @@ -430,10 +430,12 @@ func (s *StateDB) SubBalance(addr common.Address, amount *big.Int) {
func (s *StateDB) SetBalance(addr common.Address, amount *big.Int) {
stateObject := s.GetOrNewStateObject(addr)
if stateObject != nil {
if amount == nil {
amount = big.NewInt(0)
}
prevBalance := stateObject.Balance()
s.unexpectedBalanceDelta.Add(s.unexpectedBalanceDelta, amount)
s.unexpectedBalanceDelta.Sub(s.unexpectedBalanceDelta, prevBalance)

stateObject.SetBalance(amount)
}
}
Expand Down
6 changes: 3 additions & 3 deletions core/state_transition.go
Original file line number Diff line number Diff line change
Expand Up @@ -461,9 +461,10 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) {

// Arbitrum: record self destructs
if st.evm.Config.Debug {
for _, address := range st.evm.StateDB.GetSuicides() {
suicides := st.evm.StateDB.GetSuicides()
for i, address := range suicides {
balance := st.evm.StateDB.GetBalance(address)
st.evm.Config.Tracer.CaptureArbitrumTransfer(st.evm, &address, nil, balance, false, "selfDestruct")
st.evm.Config.Tracer.CaptureArbitrumTransfer(st.evm, &suicides[i], nil, balance, false, "selfDestruct")
}
}

Expand All @@ -477,7 +478,6 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) {
}

func (st *StateTransition) refundGas(refundQuotient uint64) {

st.gasRemaining += st.evm.ProcessingHook.ForceRefundGas()

nonrefundable := st.evm.ProcessingHook.NonrefundableGas()
Expand Down
2 changes: 1 addition & 1 deletion core/types/receipt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ func clearComputedFieldsOnReceipt(receipt *Receipt) *Receipt {
cpy.BlockHash = common.Hash{0xff, 0xff, 0x22}
cpy.BlockNumber = big.NewInt(math.MaxUint32)
cpy.TransactionIndex = math.MaxUint32
cpy.ContractAddress = common.Address{0xff, 0xff, 0x33}
cpy.ContractAddress = common.Address{} // Arbitrum: we check address is blank before rederiving
cpy.GasUsed = 0xffffffff
cpy.Logs = clearComputedFieldsOnLogs(receipt.Logs)
return &cpy
Expand Down
4 changes: 2 additions & 2 deletions core/types/transaction_marshalling.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ func (tx *Transaction) MarshalJSON() ([]byte, error) {
enc.Value = (*hexutil.Big)(itx.Value)
enc.To = tx.To()
case *ArbitrumUnsignedTx:
enc.From = (*common.Address)(&itx.From)
enc.From = &itx.From
enc.ChainID = (*hexutil.Big)(itx.ChainId)
enc.Nonce = (*hexutil.Uint64)(&itx.Nonce)
enc.Gas = (*hexutil.Uint64)(&itx.Gas)
Expand All @@ -163,7 +163,7 @@ func (tx *Transaction) MarshalJSON() ([]byte, error) {
enc.Data = (*hexutil.Bytes)(&itx.Data)
enc.To = tx.To()
case *ArbitrumRetryTx:
enc.From = (*common.Address)(&itx.From)
enc.From = &itx.From
enc.TicketId = &itx.TicketId
enc.RefundTo = &itx.RefundTo
enc.ChainID = (*hexutil.Big)(itx.ChainId)
Expand Down
1 change: 0 additions & 1 deletion core/vm/instructions.go
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,6 @@ func opExtCodeHash(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext)
}

func opGasprice(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) {

// Arbitrum: provide an opportunity to remove the tip from the gas price
gasPrice := interpreter.evm.ProcessingHook.GasPriceOp(interpreter.evm)

Expand Down
2 changes: 1 addition & 1 deletion core/vm/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
// Note that reference types are actual VM data structures; make copies
// if you need to retain them beyond the current call.
type EVMLogger interface {
// Arbitrum: capture a transfer, mint, or burn that happens outside of EVM exectuion
// Arbitrum: capture a transfer, mint, or burn that happens outside of EVM execution
CaptureArbitrumTransfer(env *EVM, from, to *common.Address, value *big.Int, before bool, purpose string)
CaptureArbitrumStorageGet(key common.Hash, depth int, before bool)
CaptureArbitrumStorageSet(key, value common.Hash, depth int, before bool)
Expand Down
13 changes: 12 additions & 1 deletion eth/tracers/internal/tracetest/calltrace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,19 @@ type callLog struct {
Data hexutil.Bytes `json:"data"`
}

type arbitrumTransfer struct {
Purpose string `json:"purpose"`
From *string `json:"from"`
To *string `json:"to"`
Value string `json:"value"`
}

// callTrace is the result of a callTracer run.
type callTrace struct {
// Arbitrum: we add these here due to the tracer returning the top frame
BeforeEVMTransfers *[]arbitrumTransfer `json:"beforeEVMTransfers,omitempty"`
AfterEVMTransfers *[]arbitrumTransfer `json:"afterEVMTransfers,omitempty"`

From common.Address `json:"from"`
Gas *hexutil.Uint64 `json:"gas"`
GasUsed *hexutil.Uint64 `json:"gasUsed"`
Expand Down Expand Up @@ -327,7 +338,7 @@ func TestZeroValueToNotExitCall(t *testing.T) {
if err != nil {
t.Fatalf("failed to retrieve trace result: %v", err)
}
wantStr := `{"from":"0x682a80a6f560eec50d54e63cbeda1c324c5f8d1b","gas":"0x7148","gasUsed":"0x54d8","to":"0x00000000000000000000000000000000deadbeef","input":"0x","calls":[{"from":"0x00000000000000000000000000000000deadbeef","gas":"0x6cbf","gasUsed":"0x0","to":"0x00000000000000000000000000000000000000ff","input":"0x","value":"0x0","type":"CALL"}],"value":"0x0","type":"CALL"}`
wantStr := `{"beforeEVMTransfers":[{"purpose":"feePayment","from":"0x682a80a6f560eeC50d54E63CBeDa1c324C5F8d1b","to":null,"value":"0x0"}],"afterEVMTransfers":[{"purpose":"gasRefund","from":null,"to":"0x682a80a6f560eeC50d54E63CBeDa1c324C5F8d1b","value":"0x0"},{"purpose":"tip","from":null,"to":"0x0000000000000000000000000000000000000000","value":"0x0"}],"from":"0x682a80a6f560eec50d54e63cbeda1c324c5f8d1b","gas":"0x7148","gasUsed":"0x54d8","to":"0x00000000000000000000000000000000deadbeef","input":"0x","calls":[{"from":"0x00000000000000000000000000000000deadbeef","gas":"0x6cbf","gasUsed":"0x0","to":"0x00000000000000000000000000000000000000ff","input":"0x","value":"0x0","type":"CALL"}],"value":"0x0","type":"CALL"}`
if string(res) != wantStr {
t.Fatalf("trace mismatch\n have: %v\n want: %v\n", string(res), wantStr)
}
Expand Down
24 changes: 23 additions & 1 deletion eth/tracers/internal/tracetest/testdata/call_tracer/create.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,29 @@
},
"input": "0xf907ef098504e3b29200830897be8080b9079c606060405260405160208061077c83398101604052808051906020019091905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006101000a81548160ff02191690831515021790555050610653806101296000396000f300606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e4382a146100855780631c02708d146100ae5780632e1a7d4d146100c35780635114cb52146100e6578063a37dda2c146100fe578063ae200e7914610153578063b5769f70146101a8575b005b341561009057600080fd5b6100986101d1565b6040518082815260200191505060405180910390f35b34156100b957600080fd5b6100c16101d7565b005b34156100ce57600080fd5b6100e460048080359060200190919050506102eb565b005b6100fc6004808035906020019091905050610513565b005b341561010957600080fd5b6101116105d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015e57600080fd5b6101666105fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b357600080fd5b6101bb610621565b6040518082815260200191505060405180910390f35b60025481565b60011515600460009054906101000a900460ff1615151415156101f957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102a15750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156102ac57600080fd5b6000600460006101000a81548160ff0219169083151502179055506003543073ffffffffffffffffffffffffffffffffffffffff163103600281905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806103935750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561039e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561048357600060025411801561040757506002548111155b151561041257600080fd5b80600254036002819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561047e57600080fd5b610510565b600060035411801561049757506003548111155b15156104a257600080fd5b8060035403600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561050f57600080fd5b5b50565b60011515600460009054906101000a900460ff16151514151561053557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561059657506003548160035401115b80156105bd575080600354013073ffffffffffffffffffffffffffffffffffffffff163110155b15156105c857600080fd5b806003540160038190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600354815600a165627a7a72305820c3b849e8440987ce43eae3097b77672a69234d516351368b03fe5b7de03807910029000000000000000000000000c65e620a3a55451316168d57e268f5702ef56a1129a01060f46676a5dff6f407f0f51eb6f37f5c8c54e238c70221e18e65fc29d3ea65a0557b01c50ff4ffaac8ed6e5d31237a4ecbac843ab1bfe8bb0165a0060df7c54f",
"result": {
"from": "0x13e4acefe6a6700604929946e70e6443e4e73447",
"beforeEVMTransfers": [
{
"purpose": "feePayment",
"from": "0x13e4ACeFE6a6700604929946E70E6443E4E73447",
"to": null,
"value": "0x2a0383e2a65c00"
}
],
"afterEVMTransfers": [
{
"purpose": "gasRefund",
"from": null,
"to": "0x13e4ACeFE6a6700604929946E70E6443E4E73447",
"value": "0x0"
},
{
"purpose": "tip",
"from": null,
"to": "0xD049bfd667cB46Aa3Ef5Df0dA3e57DB3Be39E511",
"value": "0x2a0383e2a65c00"
}
],
"from": "0x13e4acefe6a6700604929946e70e6443e4e73447",
"gas": "0x5e106",
"gasUsed": "0x897be",
"input": "0x606060405260405160208061077c83398101604052808051906020019091905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006101000a81548160ff02191690831515021790555050610653806101296000396000f300606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e4382a146100855780631c02708d146100ae5780632e1a7d4d146100c35780635114cb52146100e6578063a37dda2c146100fe578063ae200e7914610153578063b5769f70146101a8575b005b341561009057600080fd5b6100986101d1565b6040518082815260200191505060405180910390f35b34156100b957600080fd5b6100c16101d7565b005b34156100ce57600080fd5b6100e460048080359060200190919050506102eb565b005b6100fc6004808035906020019091905050610513565b005b341561010957600080fd5b6101116105d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015e57600080fd5b6101666105fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b357600080fd5b6101bb610621565b6040518082815260200191505060405180910390f35b60025481565b60011515600460009054906101000a900460ff1615151415156101f957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102a15750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156102ac57600080fd5b6000600460006101000a81548160ff0219169083151502179055506003543073ffffffffffffffffffffffffffffffffffffffff163103600281905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806103935750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561039e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561048357600060025411801561040757506002548111155b151561041257600080fd5b80600254036002819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561047e57600080fd5b610510565b600060035411801561049757506003548111155b15156104a257600080fd5b8060035403600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561050f57600080fd5b5b50565b60011515600460009054906101000a900460ff16151514151561053557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561059657506003548160035401115b80156105bd575080600354013073ffffffffffffffffffffffffffffffffffffffff163110155b15156105c857600080fd5b806003540160038190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600354815600a165627a7a72305820c3b849e8440987ce43eae3097b77672a69234d516351368b03fe5b7de03807910029000000000000000000000000c65e620a3a55451316168d57e268f5702ef56a11",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,29 @@
},
"input": "0xf88b8206628504a817c8008303d09094c212e03b9e060e36facad5fd8f4435412ca22e6b80a451a34eb80000000000000000000000000000000000000000000000280faf689c35ac00002aa0a7ee5b7877811bf671d121b40569462e722657044808dc1d6c4f1e4233ec145ba0417e7543d52b65738d9df419cbe40a708424f4d54b0fc145c0a64545a2bb1065",
"result": {
"calls": [
"beforeEVMTransfers": [
{
"purpose": "feePayment",
"from": "0x70C9217D814985faEF62B124420F8dFbdDD96433",
"to": null,
"value": "0x11c37937e08000"
}
],
"afterEVMTransfers": [
{
"purpose": "gasRefund",
"from": null,
"to": "0x70C9217D814985faEF62B124420F8dFbdDD96433",
"value": "0xac27a3b12e800"
},
{
"purpose": "tip",
"from": null,
"to": "0x1977C248e1014Cc103929Dd7f154199C916E39Ec",
"value": "0x700fefccd9800"
}
],
"calls": [
{
"from": "0xc212e03b9e060e36facad5fd8f4435412ca22e6b",
"gas": "0x31217",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,28 @@
},
"input": "0xf889448504a817c800832dc6c094269296dddce321a6bcbaa2f0181127593d732cba80a47065cb480000000000000000000000001523e55a1ca4efbae03355775ae89f8d7699ad9e29a080ed81e4c5e9971a730efab4885566e2c868cd80bd4166d0ed8c287fdf181650a069d7c49215e3d4416ad239cd09dbb71b9f04c16b33b385d14f40b618a7a65115",
"result": {
"beforeEVMTransfers": [
{
"purpose": "feePayment",
"from": "0xA529806c67cc6486d4D62024471772F47F6FD672",
"to": null,
"value": "0xd529ae9e860000"
}
],
"afterEVMTransfers": [
{
"purpose": "gasRefund",
"from": null,
"to": "0xA529806c67cc6486d4D62024471772F47F6FD672",
"value": "0xd1b8093ff89800"
},
{
"purpose": "tip",
"from": null,
"to": "0x5659922cE141EedBC2733678f9806c77b4eEBEE8",
"value": "0x371a55e8d6800"
}
],
"calls": [
{
"calls": [
Expand Down
Loading

0 comments on commit 174034e

Please sign in to comment.