Skip to content

Conversation

@gzliudan
Copy link
Collaborator

@gzliudan gzliudan commented Mar 11, 2024

Proposed changes

This PR fix #179 and #457 by implement EIP-1898.

Types of changes

What types of changes does your code introduce to XDC network?
Put an in the boxes that apply

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation Update (if none of the other choices apply)
  • Regular KTLO or any of the maintaince work. e.g code style
  • CICD Improvement

Impacted Components

Which part of the codebase this PR will touch base on,

Put an in the boxes that apply

  • Consensus
  • Account
  • Network
  • Geth
  • Smart Contract
  • External components
  • Not sure (Please specify below)

Checklist

Put an in the boxes once you have confirmed below actions (or provide reasons on not doing so) that

  • This PR has sufficient test coverage (unit/integration test) OR I have provided reason in the PR description for not having test coverage
  • Provide an end-to-end test plan in the PR description on how to manually test it on the devnet/testnet.
  • Tested the backwards compatibility.
  • Tested with XDC nodes running this version co-exist with those running the previous version.
  • Relevant documentation has been updated as part of this PR
  • N/A

Test

MY_ADDRESS="0xD4CE02705041F04135f1949Bc835c1Fe0885513c"
XDCValidator="0x0000000000000000000000000000000000000088"

HASH0=$(curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 4003,
  "method": "eth_getBlockByNumber",
  "params": [
    "0x0",
    false
  ]
}' | jq -r '.result.hash')

HASH1=$(curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 4003,
  "method": "eth_getBlockByNumber",
  "params": [
    "0x1",
    false
  ]
}' | jq -r '.result.hash')

echo "HASH0 = ${HASH0}"
echo "HASH1 = ${HASH1}"

eth_call

test: function ownerCount() => 0x0db02622


request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": null,
  "error": {
    "code": -32700,
    "message": "parse error"
  }
}

request:

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "0x0"
  ]
}' | jq

# block number earliest
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "earliest"
  ]
}' | jq

# genesis hash
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockHash": "'"${HASH0}"'"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "recovery failed"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "latest"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_call",
  "params": [
    {
      "to": "'"${XDCValidator}"'",
      "data": "0x0db02622"
    },
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}

eth_estimateGas

test: function ownerCount() => 0x0db02622


request:

curl -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 1234,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": null,
  "error": {
    "code": -32700,
    "message": "parse error"
  }
}

request:

# block number 0
curl -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 1234,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "0x0"
  ]
}' | jq

# block number earliest
curl -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 1234,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "earliest"
  ]
}' | jq

# genesis hash
curl -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 1234,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockHash": "'"${HASH0}"'"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "recovery failed"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x5208"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "latest"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x5208"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x5208"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x5208"
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0xD4CE02705041F04135f1949Bc835c1Fe0885513c",
      "to": "0x85f33E1242d87a875301312BD4EbaEe8876517BA",
      "value": "0x12345678"
    },
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x5208"
}

eth_getAccountInfo


request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32602,
    "message": "missing value for required argument 1"
  }
}

request:

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "0x0"
  ]
}' | jq

# block number earliest
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "earliest"
  ]
}' | jq

# genesis hash
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "'"${HASH0}"'"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": {
    "address": "0x0000000000000000000000000000000000000088",
    "balance": "0x1fc3842bd1f071c00000",
    "codeHash": "0x43e5b04f4015a9345835af4980fea519f1a1f499cbfddd624696cca4dcd43657",
    "codeSize": 14452,
    "nonce": 0,
    "storageHash": "0x69fc7cb82b5837876debf26719e7057afa53678154477a9a8376f371caef86b8"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": {
    "address": "0x0000000000000000000000000000000000000088",
    "balance": "0x1fc3842bd1f071c00000",
    "codeHash": "0x43e5b04f4015a9345835af4980fea519f1a1f499cbfddd624696cca4dcd43657",
    "codeSize": 14452,
    "nonce": 0,
    "storageHash": "0x69fc7cb82b5837876debf26719e7057afa53678154477a9a8376f371caef86b8"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "latest"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": {
    "address": "0x0000000000000000000000000000000000000088",
    "balance": "0x1fc3842bd1f071c00000",
    "codeHash": "0x43e5b04f4015a9345835af4980fea519f1a1f499cbfddd624696cca4dcd43657",
    "codeSize": 14452,
    "nonce": 0,
    "storageHash": "0x69fc7cb82b5837876debf26719e7057afa53678154477a9a8376f371caef86b8"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": {
    "address": "0x0000000000000000000000000000000000000088",
    "balance": "0x1fc3842bd1f071c00000",
    "codeHash": "0x43e5b04f4015a9345835af4980fea519f1a1f499cbfddd624696cca4dcd43657",
    "codeSize": 14452,
    "nonce": 0,
    "storageHash": "0x69fc7cb82b5837876debf26719e7057afa53678154477a9a8376f371caef86b8"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": {
    "address": "0x0000000000000000000000000000000000000088",
    "balance": "0x1fc3842bd1f071c00000",
    "codeHash": "0x43e5b04f4015a9345835af4980fea519f1a1f499cbfddd624696cca4dcd43657",
    "codeSize": 14452,
    "nonce": 0,
    "storageHash": "0x69fc7cb82b5837876debf26719e7057afa53678154477a9a8376f371caef86b8"
  }
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getAccountInfo",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": {
    "address": "0x0000000000000000000000000000000000000088",
    "balance": "0x1fc3842bd1f071c00000",
    "codeHash": "0x43e5b04f4015a9345835af4980fea519f1a1f499cbfddd624696cca4dcd43657",
    "codeSize": 14452,
    "nonce": 0,
    "storageHash": "0x69fc7cb82b5837876debf26719e7057afa53678154477a9a8376f371caef86b8"
  }
}

eth_getBalance

ADDRESS="${MY_ADDRESS}"
ADDRESS="${XDCValidator}"


request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32602,
    "message": "missing value for required argument 1"
  }
}

request:

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "0x0"
  ]
}' | jq

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "0xffffffff"
  ]
}' | jq

# block number earliest
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "earliest"
  ]
}' | jq

# genesis hash
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "'"${HASH0}"'"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x1fc3842bd1f071c00000"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x1fc3842bd1f071c00000"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "latest"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x1fc3842bd1f071c00000"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x1fc3842bd1f071c00000"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x1fc3842bd1f071c00000"
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getBalance",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x1fc3842bd1f071c00000"
}

eth_getCode


request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32602,
    "message": "missing value for required argument 1"
  }
}

request:

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "0x0"
  ]
}' | jq

# block number earliest
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "earliest"
  ]
}' | jq

# genesis hash
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "'"${HASH0}"'"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "latest"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getCode",
  "params": [
    "'"${XDCValidator}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

eth_getStorageAt


request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32602,
    "message": "missing value for required argument 2"
  }
}

request:

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "0x0"
  ]
}' | jq

# block number earliest
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "earliest"
  ]
}' | jq

# genesis hash
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "'"${HASH0}"'"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "latest"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getStorageAt",
  "params": [
    "'"${XDCValidator}"'",
    "0x8",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

eth_getTransactionCount


request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32602,
    "message": "missing value for required argument 1"
  }
}

request:

# block number 0
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "0x0"
  ]
}' | jq

# block number earliest
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "earliest"
  ]
}' | jq

# genesis hash
curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "'"${HASH0}"'"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "0x1"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "latest"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "pending"
  ]
}' | jq
{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0"
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "committed"
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "PoS V1 does not support confirmed block lookup"
  }
}

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockNumber": "0x1"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x0"
}

nonexistent block number

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    "0xffffffffffff"
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockNumber": "0xffffffffffff"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for number not found"
  }
}

nonexistent hash

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "error": {
    "code": -32000,
    "message": "header for hash not found"
  }
}

test blockHash of block number 1:

request:

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "'"${HASH1}"'"
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": true 
    }
  ]
}' | jq

curl -s -X POST -H "Content-Type: application/json" ${RPC} -d '{
  "jsonrpc": "2.0",
  "id": 8001,
  "method": "eth_getTransactionCount",
  "params": [
    "'"${ADDRESS}"'",
    {
        "blockHash": "'"${HASH1}"'",
        "requireCanonical": false 
    }
  ]
}' | jq

response:

{
  "jsonrpc": "2.0",
  "id": 8001,
  "result": "0x......"
}

@gzliudan gzliudan merged commit 106af4d into XinFinOrg:dev-upgrade Mar 12, 2024
@gzliudan gzliudan deleted the EIP-1898 branch March 12, 2024 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants