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

Have admin_* endpoints call and response pattern match geth admin endpoint. #7745

Open
obasekiosa opened this issue Nov 11, 2024 · 2 comments
Labels

Comments

@obasekiosa
Copy link
Contributor

obasekiosa commented Nov 11, 2024

Description
There are some inconsistencies across nethermind admin endpoint(module) and the geth admin endpoint
the aim of this issue is to have them identified and resolved.

example nethermind admin node_info endpoint

{
  "enode": "enode://5b7b0965746034b8c948e118c365bb0d4427f4937bb3b8c0d9e14209d2abac3303d47aebdfd011a7aa3a4a6b0006e38e6b8fa8e9186b7626afba29155bf56822@102.89.32.71:30303",
  "id": "cebc3e7e71de6ffc337f3b2616b706450e9d1f4ccc130196263256652e018878",
  "ip": "102.89.32.71",
  "listenAddr": "102.89.32.71:30303",
  "name": "Nethermind/v1.30.0-unstable+6ab6e65b/linux-x64/dotnet8.0.6",
  "ports": {
      "discovery": 30303,
      "listener": 30303
  },
  "protocols": {
      "eth": {
          "difficulty": "0xc70d815d562d3cfa955",
          "genesis": "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
          "head": "0x201b9c11de140ce9090bd43974e2b5c12feff5f566afe6c993eac1959a30fb31",
          "network": "0x1",
          "config": {
              "maxCodeSize": "0x6000",
              "maxCodeSizeTransition": "0x28d138",
              "gasLimitBoundDivisor": "0x400",
              "registrar": "0xe3389675d0338462dc76c6f9a3e432550c36a142",
              "maximumExtraDataSize": "0x20",
              "minGasLimit": "0x1388",
              "forkCanonHash": "0x4985f5ca3d2afbec36529aa96f74de3cc10a2a4a6c44f2157a57d2c6059a11bb",
              "forkBlock": "0x1d4c00",
              "eip150Transition": "0x259518",
              "eip152Transition": "0x8a61c8",
              "eip160Transition": "0x28d138",
              "eip161abcTransition": "0x28d138",
              "eip161dTransition": "0x28d138",
              "eip155Transition": "0x28d138",
              "eip140Transition": "0x42ae50",
              "eip211Transition": "0x42ae50",
              "eip214Transition": "0x42ae50",
              "eip658Transition": "0x42ae50",
              "eip145Transition": "0x6f1580",
              "eip1014Transition": "0x6f1580",
              "eip1052Transition": "0x6f1580",
              "eip1108Transition": "0x8a61c8",
              "eip1344Transition": "0x8a61c8",
              "eip1884Transition": "0x8a61c8",
              "eip2028Transition": "0x8a61c8",
              "eip2200Transition": "0x8a61c8",
              "eip1559Transition": "0xc5d488",
              "eip2565Transition": "0xbad420",
              "eip2929Transition": "0xbad420",
              "eip2930Transition": "0xbad420",
              "eip3198Transition": "0xc5d488",
              "eip3529Transition": "0xc5d488",
              "eip3541Transition": "0xc5d488",
              "eip3607Transition": "0x0",
              "eip1559BaseFeeInitialValue": "0x3b9aca00",
              "eip1559BaseFeeMaxChangeDenominator": "0x8",
              "eip1559ElasticityMultiplier": "0x2",
              "terminalTotalDifficulty": "0xc70d808a128d7380000",
              "beaconChainGenesisTimestamp": "0x5fc63057",
              "eip3651TransitionTimestamp": "0x64373057",
              "eip3855TransitionTimestamp": "0x64373057",
              "eip3860TransitionTimestamp": "0x64373057",
              "eip4895TransitionTimestamp": "0x64373057",
              "eip4844TransitionTimestamp": "0x65f1b057",
              "eip1153TransitionTimestamp": "0x65f1b057",
              "eip5656TransitionTimestamp": "0x65f1b057",
              "eip6780TransitionTimestamp": "0x65f1b057",
              "eip4788TransitionTimestamp": "0x65f1b057",
              "eip4788ContractAddress": "0x000f3df6d732807ef1319fb7b8bb8522d0beac02",
              "depositContractAddress": "0x00000000219ab540356cbb839cbe05303d7705fa",
              "eip7002ContractAddress": "0x09fc772d0857550724b07b850a4323f39112aaaa",
              "eip7251ContractAddress": "0x01abea29659e5e97c95107f20bb753cd3e09bbbb",
              "eip2935ContractAddress": "0x0aae40965e6800cd9b1f4b05ff21581047e3f91e"
          }
      }
  }
}

example geth admin node_info call.

{
  enode: "enode://3d876252880e32116fdb52ea56a78ee2b9789e55b4413de910db69702ce93a7ff9a0b7c647a010a5e1e079c0aca146331083009644e12dc03510b9de9f50b9ef@156.146.56.131:30303?discport=39261",
  enr: "enr:-K64QL0-CI9BofDkirpulbV1OOOgqf5HLRMHr9iaziZInqI9HmeGOGZv2hs6J7olLu32LUMeYHTCjNBu3De_zlkI1fSGAY_h5ivyg2V0aMrJhPxk7ASDEYwwgmlkgnY0gmlwhJySOIOJc2VjcDI1NmsxoQM9h2JSiA4yEW_bUupWp47iuXieVbRBPekQ22lwLOk6f4RzbmFwwIN0Y3CCdl-DdWRwgpldhHVkcDaCdl8",
  id: "b7b61ea54ad081258a13a6d82920ce6719301f4670c458f64f0035e3463ec2df",
  ip: "156.146.56.131",
  listenAddr: "[::]:30303",
  name: "Geth/v1.14.4-unstable-51327686/linux-arm64/go1.22.3",
  ports: {
    discovery: 39261,
    listener: 30303
  },
  protocols: {
    eth: {
      config: {
        arrowGlacierBlock: 13773000,
        berlinBlock: 12244000,
        byzantiumBlock: 4370000,
        cancunTime: 1710338135,
        chainId: 1,
        constantinopleBlock: 7280000,
        daoForkBlock: 1920000,
        daoForkSupport: true,
        eip150Block: 2463000,
        eip155Block: 2675000,
        eip158Block: 2675000,
        ethash: {},
        grayGlacierBlock: 15050000,
        homesteadBlock: 1150000,
        istanbulBlock: 9069000,
        londonBlock: 12965000,
        muirGlacierBlock: 9200000,
        petersburgBlock: 7280000,
        shanghaiTime: 1681338455,
        terminalTotalDifficulty: 5.875e+22,
        terminalTotalDifficultyPassed: true
      },
      difficulty: 17179869184,
      genesis: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
      head: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
      network: 1
    },
    snap: {}
  }
}
@obasekiosa
Copy link
Contributor Author

obasekiosa commented Nov 25, 2024

Will split this into smaller issues as some required info do not currenlty exist, and require their on separate pr's.
Like:

  • restructure each end points response to match geth first, while ignoring currently missing fields.

  • getting and storing the protocols supported by a peer.

  • adding a trusted peers List - add as member to peerPool (requires making use of the currenlty unused reputation field of nodes)

  • implementing
    admin_addTrustedPeer

    admin_datadir

    admin_exportChain

    admin_importChain

    admin_peerEvents

    admin_removeTrustedPeer

    admin_startHTTP

    admin_startWS

    admin_stopHTTP

    admin_stopWS

I'd link those issues here.

@obasekiosa
Copy link
Contributor Author

#7808

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant