From 4408e267e175643407143f839b0027357076e4cb Mon Sep 17 00:00:00 2001 From: fine135 Date: Mon, 11 May 2026 18:15:16 +0200 Subject: [PATCH 1/2] Add getNetworkRegisteredBlock view to SubnetPrecompile --- .../src/contracts/precompileWrapper.sol | 5 +++ .../src/contracts/precompileWrapper.ts | 21 +++++++++- contract-tests/src/contracts/subnet.ts | 19 +++++++++ .../precompileWrapper.direct-call.test.ts | 9 ++++ precompiles/src/subnet.rs | 41 ++++++++++++++++++- 5 files changed, 93 insertions(+), 2 deletions(-) diff --git a/contract-tests/src/contracts/precompileWrapper.sol b/contract-tests/src/contracts/precompileWrapper.sol index 9f5fe242c1..a485de1543 100644 --- a/contract-tests/src/contracts/precompileWrapper.sol +++ b/contract-tests/src/contracts/precompileWrapper.sol @@ -35,6 +35,7 @@ interface ISubnet { string memory additional ) external payable; function getServingRateLimit(uint16 netuid) external view returns (uint64); + function getNetworkRegisteredBlock(uint16 netuid) external view returns (uint64); } interface INeuron { @@ -223,6 +224,10 @@ contract PrecompileWrapper { return subnet.getServingRateLimit(netuid); } + function getNetworkRegisteredBlock(uint16 netuid) external view returns (uint64) { + return subnet.getNetworkRegisteredBlock(netuid); + } + // ============ Neuron Functions ============ function burnedRegister(uint16 netuid, bytes32 hotkey) external payable { diff --git a/contract-tests/src/contracts/precompileWrapper.ts b/contract-tests/src/contracts/precompileWrapper.ts index 9916b735e9..ed382014de 100644 --- a/contract-tests/src/contracts/precompileWrapper.ts +++ b/contract-tests/src/contracts/precompileWrapper.ts @@ -413,6 +413,25 @@ export const PRECOMPILE_WRAPPER_ABI = [ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + } + ], + "name": "getNetworkRegisteredBlock", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -711,4 +730,4 @@ export const PRECOMPILE_WRAPPER_ABI = [ } ]; -export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b50612bb98061001c5f395ff3fe6080604052600436106101d6575f3560e01c80637d691e3011610101578063b1f789ef11610094578063d75e3e0d11610063578063d75e3e0d146106a9578063db1d0fd5146106d3578063ec556889146106fd578063fc6679fb14610727576101d6565b8063b1f789ef146105fd578063bfe252a214610639578063caf2ebf214610663578063cd6f4eb11461068d576101d6565b80639f246f6f116100d05780639f246f6f14610551578063a21762761461058d578063ac3166bf146105b7578063afed65f9146105e1576101d6565b80637d691e30146104815780638bba466c1461049d57806394e3ac6f146104d9578063998538c414610515576101d6565b80634c378a96116101795780635e25f3f8116101485780635e25f3f8146103d157806369e38bc3146103ed57806371214e27146104295780637444dadc14610445576101d6565b80634c378a96146103175780634cf088d9146103415780635b53ddde1461036b5780635b7210c514610395576101d6565b80631f193572116101b55780631f193572146102665780631fc9b141146102a25780633175bd98146102be5780634054ecca146102fb576101d6565b80620ae759146101da5780630494cd9a146102025780630cadeda51461023e575b5f5ffd5b3480156101e5575f5ffd5b5061020060048036038101906101fb91906113ab565b610751565b005b34801561020d575f5ffd5b506102286004803603810190610223919061148d565b6107c1565b60405161023591906114c7565b60405180910390f35b348015610249575f5ffd5b50610264600480360381019061025f9190611519565b610843565b005b348015610271575f5ffd5b5061028c600480360381019061028791906115a0565b6108b4565b60405161029991906115da565b60405180910390f35b6102bc60048036038101906102b79190611626565b610936565b005b3480156102c9575f5ffd5b506102e460048036038101906102df9190611676565b6109a7565b6040516102f29291906116de565b60405180910390f35b61031560048036038101906103109190611705565b610a2f565b005b348015610322575f5ffd5b5061032b610a9d565b604051610338919061179e565b60405180910390f35b34801561034c575f5ffd5b50610355610aa3565b60405161036291906117d7565b60405180910390f35b348015610376575f5ffd5b5061037f610aa9565b60405161038c9190611810565b60405180910390f35b3480156103a0575f5ffd5b506103bb60048036038101906103b69190611676565b610aaf565b6040516103c8919061184b565b60405180910390f35b6103eb60048036038101906103e69190611914565b610b34565b005b3480156103f8575f5ffd5b50610413600480360381019061040e91906115a0565b610bb4565b6040516104209190611a98565b60405180910390f35b610443600480360381019061043e9190611adb565b610c36565b005b348015610450575f5ffd5b5061046b600480360381019061046691906115a0565b610cad565b604051610478919061184b565b60405180910390f35b61049b60048036038101906104969190611626565b610d2f565b005b3480156104a8575f5ffd5b506104c360048036038101906104be9190611b52565b610da0565b6040516104d09190611ca3565b60405180910390f35b3480156104e4575f5ffd5b506104ff60048036038101906104fa9190611cbd565b610e2a565b60405161050c9190611ddf565b60405180910390f35b348015610520575f5ffd5b5061053b60048036038101906105369190611cbd565b610eb0565b6040516105489190611a98565b60405180910390f35b34801561055c575f5ffd5b5061057760048036038101906105729190611cbd565b610f32565b6040516105849190611a98565b60405180910390f35b348015610598575f5ffd5b506105a1610fb4565b6040516105ae9190611e1f565b60405180910390f35b3480156105c2575f5ffd5b506105cb610fba565b6040516105d89190611e58565b60405180910390f35b6105fb60048036038101906105f69190611e9b565b610fc0565b005b348015610608575f5ffd5b50610623600480360381019061061e9190611f38565b61103d565b604051610630919061206c565b60405180910390f35b348015610644575f5ffd5b5061064d6110c9565b60405161065a91906120ac565b60405180910390f35b34801561066e575f5ffd5b506106776110cf565b60405161068491906120e5565b60405180910390f35b6106a760048036038101906106a29190611cbd565b6110d5565b005b3480156106b4575f5ffd5b506106bd611142565b6040516106ca919061211e565b60405180910390f35b3480156106de575f5ffd5b506106e7611148565b6040516106f49190612157565b60405180910390f35b348015610708575f5ffd5b5061071161114e565b60405161071e9190612190565b60405180910390f35b348015610732575f5ffd5b5061073b611154565b60405161074891906121c9565b60405180910390f35b61080b73ffffffffffffffffffffffffffffffffffffffff16620ae7598484846040518463ffffffff1660e01b815260040161078f93929190612299565b5f604051808303815f87803b1580156107a6575f5ffd5b505af11580156107b8573d5f5f3e3d5ffd5b50505050505050565b5f61080c73ffffffffffffffffffffffffffffffffffffffff16630494cd9a836040518263ffffffff1660e01b81526004016107fd91906122eb565b602060405180830381865afa158015610818573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083c9190612318565b9050919050565b61080b73ffffffffffffffffffffffffffffffffffffffff16630cadeda58484846040518463ffffffff1660e01b815260040161088293929190612361565b5f604051808303815f87803b158015610899575f5ffd5b505af11580156108ab573d5f5f3e3d5ffd5b50505050505050565b5f61080273ffffffffffffffffffffffffffffffffffffffff16631f193572836040518263ffffffff1660e01b81526004016108f091906115da565b602060405180830381865afa15801561090b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092f91906123aa565b9050919050565b61080573ffffffffffffffffffffffffffffffffffffffff16631fc9b1418484846040518463ffffffff1660e01b8152600401610975939291906123d5565b5f604051808303815f87803b15801561098c575f5ffd5b505af115801561099e573d5f5f3e3d5ffd5b50505050505050565b5f5f61080a73ffffffffffffffffffffffffffffffffffffffff16633175bd9885856040518363ffffffff1660e01b81526004016109e692919061240a565b6040805180830381865afa158015610a00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a24919061245b565b915091509250929050565b61080473ffffffffffffffffffffffffffffffffffffffff16634054ecca83836040518363ffffffff1660e01b8152600401610a6c929190612499565b5f604051808303815f87803b158015610a83575f5ffd5b505af1158015610a95573d5f5f3e3d5ffd5b505050505050565b61080481565b61080581565b61080a81565b5f61080973ffffffffffffffffffffffffffffffffffffffff16635b7210c584846040518363ffffffff1660e01b8152600401610aed92919061240a565b602060405180830381865afa158015610b08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2c91906124d4565b905092915050565b61080373ffffffffffffffffffffffffffffffffffffffff16631cf98c6b89898989898989896040518963ffffffff1660e01b8152600401610b7d98979695949392919061255f565b5f604051808303815f87803b158015610b94575f5ffd5b505af1158015610ba6573d5f5f3e3d5ffd5b505050505050505050505050565b5f61080873ffffffffffffffffffffffffffffffffffffffff166369e38bc3836040518263ffffffff1660e01b8152600401610bf091906115da565b602060405180830381865afa158015610c0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2f9190612620565b9050919050565b61080973ffffffffffffffffffffffffffffffffffffffff1663127e1adb86868686866040518663ffffffff1660e01b8152600401610c7995949392919061264b565b5f604051808303815f87803b158015610c90575f5ffd5b505af1158015610ca2573d5f5f3e3d5ffd5b505050505050505050565b5f61080373ffffffffffffffffffffffffffffffffffffffff16637444dadc836040518263ffffffff1660e01b8152600401610ce991906115da565b602060405180830381865afa158015610d04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2891906124d4565b9050919050565b61080573ffffffffffffffffffffffffffffffffffffffff16637d691e308484846040518463ffffffff1660e01b8152600401610d6e939291906123d5565b5f604051808303815f87803b158015610d85575f5ffd5b505af1158015610d97573d5f5f3e3d5ffd5b50505050505050565b610da861115a565b61080973ffffffffffffffffffffffffffffffffffffffff16638bba466c836040518263ffffffff1660e01b8152600401610de3919061269c565b61016060405180830381865afa158015610dff573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2391906127ea565b9050919050565b606061080b73ffffffffffffffffffffffffffffffffffffffff166394e3ac6f836040518263ffffffff1660e01b8152600401610e6791906114c7565b5f60405180830381865afa158015610e81573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610ea99190612937565b9050919050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663998538c4836040518263ffffffff1660e01b8152600401610eec91906114c7565b602060405180830381865afa158015610f07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2b9190612620565b9050919050565b5f61080573ffffffffffffffffffffffffffffffffffffffff16639f246f6f836040518263ffffffff1660e01b8152600401610f6e91906114c7565b602060405180830381865afa158015610f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fad9190612620565b9050919050565b61080681565b61080c81565b61080a73ffffffffffffffffffffffffffffffffffffffff1663afed65f9888888888888886040518863ffffffff1660e01b8152600401611007979695949392919061298d565b5f604051808303815f87803b15801561101e575f5ffd5b505af1158015611030573d5f5f3e3d5ffd5b5050505050505050505050565b606061080673ffffffffffffffffffffffffffffffffffffffff1663b1f789ef8585856040518463ffffffff1660e01b815260040161107e939291906129fa565b5f60405180830381865afa158015611098573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110c09190612b3c565b90509392505050565b61080981565b61080381565b61080073ffffffffffffffffffffffffffffffffffffffff1663cd6f4eb134836040518363ffffffff1660e01b815260040161111191906114c7565b5f604051808303818588803b158015611128575f5ffd5b505af115801561113a573d5f5f3e3d5ffd5b505050505050565b61080081565b61080881565b61080b81565b61080281565b6040518061016001604052805f81526020015f67ffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681526020015f81526020015f67ffffffffffffffff1681526020015f151581526020015f81526020015f151581526020015f63ffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b611204816111f2565b811461120e575f5ffd5b50565b5f8135905061121f816111fb565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61126f82611229565b810181811067ffffffffffffffff8211171561128e5761128d611239565b5b80604052505050565b5f6112a06111e1565b90506112ac8282611266565b919050565b5f67ffffffffffffffff8211156112cb576112ca611239565b5b602082029050602081019050919050565b5f5ffd5b5f60ff82169050919050565b6112f5816112e0565b81146112ff575f5ffd5b50565b5f81359050611310816112ec565b92915050565b5f611328611323846112b1565b611297565b9050808382526020820190506020840283018581111561134b5761134a6112dc565b5b835b8181101561137457806113608882611302565b84526020840193505060208101905061134d565b5050509392505050565b5f82601f83011261139257611391611225565b5b81356113a2848260208601611316565b91505092915050565b5f5f5f606084860312156113c2576113c16111ea565b5b5f6113cf86828701611211565b935050602084013567ffffffffffffffff8111156113f0576113ef6111ee565b5b6113fc8682870161137e565b925050604084013567ffffffffffffffff81111561141d5761141c6111ee565b5b6114298682870161137e565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145c82611433565b9050919050565b61146c81611452565b8114611476575f5ffd5b50565b5f8135905061148781611463565b92915050565b5f602082840312156114a2576114a16111ea565b5b5f6114af84828501611479565b91505092915050565b6114c1816111f2565b82525050565b5f6020820190506114da5f8301846114b8565b92915050565b5f63ffffffff82169050919050565b6114f8816114e0565b8114611502575f5ffd5b50565b5f81359050611513816114ef565b92915050565b5f5f5f606084860312156115305761152f6111ea565b5b5f61153d86828701611211565b935050602061154e86828701611302565b925050604061155f86828701611505565b9150509250925092565b5f61ffff82169050919050565b61157f81611569565b8114611589575f5ffd5b50565b5f8135905061159a81611576565b92915050565b5f602082840312156115b5576115b46111ea565b5b5f6115c28482850161158c565b91505092915050565b6115d481611569565b82525050565b5f6020820190506115ed5f8301846115cb565b92915050565b5f819050919050565b611605816115f3565b811461160f575f5ffd5b50565b5f81359050611620816115fc565b92915050565b5f5f5f6060848603121561163d5761163c6111ea565b5b5f61164a86828701611211565b935050602061165b86828701611612565b925050604061166c86828701611612565b9150509250925092565b5f5f6040838503121561168c5761168b6111ea565b5b5f61169985828601611505565b92505060206116aa85828601611211565b9150509250929050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6116d8816116b4565b82525050565b5f6040820190506116f15f8301856116cf565b6116fe60208301846116cf565b9392505050565b5f5f6040838503121561171b5761171a6111ea565b5b5f6117288582860161158c565b925050602061173985828601611211565b9150509250929050565b5f819050919050565b5f61176661176161175c84611433565b611743565b611433565b9050919050565b5f6117778261174c565b9050919050565b5f6117888261176d565b9050919050565b6117988161177e565b82525050565b5f6020820190506117b15f83018461178f565b92915050565b5f6117c18261176d565b9050919050565b6117d1816117b7565b82525050565b5f6020820190506117ea5f8301846117c8565b92915050565b5f6117fa8261176d565b9050919050565b61180a816117f0565b82525050565b5f6020820190506118235f830184611801565b92915050565b5f67ffffffffffffffff82169050919050565b61184581611829565b82525050565b5f60208201905061185e5f83018461183c565b92915050565b5f5ffd5b5f67ffffffffffffffff82111561188257611881611239565b5b61188b82611229565b9050602081019050919050565b828183375f83830152505050565b5f6118b86118b384611868565b611297565b9050828152602081018484840111156118d4576118d3611864565b5b6118df848285611898565b509392505050565b5f82601f8301126118fb576118fa611225565b5b813561190b8482602086016118a6565b91505092915050565b5f5f5f5f5f5f5f5f610100898b031215611931576119306111ea565b5b5f61193e8b828c01611211565b985050602089013567ffffffffffffffff81111561195f5761195e6111ee565b5b61196b8b828c016118e7565b975050604089013567ffffffffffffffff81111561198c5761198b6111ee565b5b6119988b828c016118e7565b965050606089013567ffffffffffffffff8111156119b9576119b86111ee565b5b6119c58b828c016118e7565b955050608089013567ffffffffffffffff8111156119e6576119e56111ee565b5b6119f28b828c016118e7565b94505060a089013567ffffffffffffffff811115611a1357611a126111ee565b5b611a1f8b828c016118e7565b93505060c089013567ffffffffffffffff811115611a4057611a3f6111ee565b5b611a4c8b828c016118e7565b92505060e089013567ffffffffffffffff811115611a6d57611a6c6111ee565b5b611a798b828c016118e7565b9150509295985092959890939650565b611a92816115f3565b82525050565b5f602082019050611aab5f830184611a89565b92915050565b611aba81611829565b8114611ac4575f5ffd5b50565b5f81359050611ad581611ab1565b92915050565b5f5f5f5f5f60a08688031215611af457611af36111ea565b5b5f611b0188828901611ac7565b9550506020611b1288828901611ac7565b9450506040611b2388828901611ac7565b9350506060611b3488828901611505565b9250506080611b4588828901611479565b9150509295509295909350565b5f60208284031215611b6757611b666111ea565b5b5f611b7484828501611505565b91505092915050565b611b86816111f2565b82525050565b611b9581611829565b82525050565b611ba4816114e0565b82525050565b5f8115159050919050565b611bbe81611baa565b82525050565b61016082015f820151611bd95f850182611b7d565b506020820151611bec6020850182611b8c565b506040820151611bff6040850182611b8c565b506060820151611c126060850182611b9b565b506080820151611c256080850182611b8c565b5060a0820151611c3860a0850182611b7d565b5060c0820151611c4b60c0850182611b8c565b5060e0820151611c5e60e0850182611bb5565b50610100820151611c73610100850182611b7d565b50610120820151611c88610120850182611bb5565b50610140820151611c9d610140850182611b9b565b50505050565b5f61016082019050611cb75f830184611bc4565b92915050565b5f60208284031215611cd257611cd16111ea565b5b5f611cdf84828501611211565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611d1a816115f3565b82525050565b606082015f820151611d345f850182611b7d565b506020820151611d476020850182611d11565b506040820151611d5a6040850182611d11565b50505050565b5f611d6b8383611d20565b60608301905092915050565b5f602082019050919050565b5f611d8d82611ce8565b611d978185611cf2565b9350611da283611d02565b805f5b83811015611dd2578151611db98882611d60565b9750611dc483611d77565b925050600181019050611da5565b5085935050505092915050565b5f6020820190508181035f830152611df78184611d83565b905092915050565b5f611e098261176d565b9050919050565b611e1981611dff565b82525050565b5f602082019050611e325f830184611e10565b92915050565b5f611e428261176d565b9050919050565b611e5281611e38565b82525050565b5f602082019050611e6b5f830184611e49565b92915050565b611e7a81611baa565b8114611e84575f5ffd5b50565b5f81359050611e9581611e71565b92915050565b5f5f5f5f5f5f5f60e0888a031215611eb657611eb56111ea565b5b5f611ec38a828b01611ac7565b9750506020611ed48a828b01611ac7565b9650506040611ee58a828b01611ac7565b9550506060611ef68a828b01611505565b9450506080611f078a828b01611302565b93505060a0611f188a828b01611e87565b92505060c0611f298a828b01611505565b91505092959891949750929550565b5f5f5f60608486031215611f4f57611f4e6111ea565b5b5f611f5c8682870161158c565b9350506020611f6d86828701611479565b9250506040611f7e8682870161158c565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611fba81611569565b82525050565b604082015f820151611fd45f850182611fb1565b506020820151611fe76020850182611b8c565b50505050565b5f611ff88383611fc0565b60408301905092915050565b5f602082019050919050565b5f61201a82611f88565b6120248185611f92565b935061202f83611fa2565b805f5b8381101561205f5781516120468882611fed565b975061205183612004565b925050600181019050612032565b5085935050505092915050565b5f6020820190508181035f8301526120848184612010565b905092915050565b5f6120968261176d565b9050919050565b6120a68161208c565b82525050565b5f6020820190506120bf5f83018461209d565b92915050565b5f6120cf8261176d565b9050919050565b6120df816120c5565b82525050565b5f6020820190506120f85f8301846120d6565b92915050565b5f6121088261176d565b9050919050565b612118816120fe565b82525050565b5f6020820190506121315f83018461210f565b92915050565b5f6121418261176d565b9050919050565b61215181612137565b82525050565b5f60208201905061216a5f830184612148565b92915050565b5f61217a8261176d565b9050919050565b61218a81612170565b82525050565b5f6020820190506121a35f830184612181565b92915050565b5f6121b38261176d565b9050919050565b6121c3816121a9565b82525050565b5f6020820190506121dc5f8301846121ba565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612214816112e0565b82525050565b5f612225838361220b565b60208301905092915050565b5f602082019050919050565b5f612247826121e2565b61225181856121ec565b935061225c836121fc565b805f5b8381101561228c578151612273888261221a565b975061227e83612231565b92505060018101905061225f565b5085935050505092915050565b5f6060820190506122ac5f8301866114b8565b81810360208301526122be818561223d565b905081810360408301526122d2818461223d565b9050949350505050565b6122e581611452565b82525050565b5f6020820190506122fe5f8301846122dc565b92915050565b5f81519050612312816111fb565b92915050565b5f6020828403121561232d5761232c6111ea565b5b5f61233a84828501612304565b91505092915050565b61234c816112e0565b82525050565b61235b816114e0565b82525050565b5f6060820190506123745f8301866114b8565b6123816020830185612343565b61238e6040830184612352565b949350505050565b5f815190506123a481611576565b92915050565b5f602082840312156123bf576123be6111ea565b5b5f6123cc84828501612396565b91505092915050565b5f6060820190506123e85f8301866114b8565b6123f56020830185611a89565b6124026040830184611a89565b949350505050565b5f60408201905061241d5f830185612352565b61242a60208301846114b8565b9392505050565b61243a816116b4565b8114612444575f5ffd5b50565b5f8151905061245581612431565b92915050565b5f5f60408385031215612471576124706111ea565b5b5f61247e85828601612447565b925050602061248f85828601612447565b9150509250929050565b5f6040820190506124ac5f8301856115cb565b6124b960208301846114b8565b9392505050565b5f815190506124ce81611ab1565b92915050565b5f602082840312156124e9576124e86111ea565b5b5f6124f6848285016124c0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612531826124ff565b61253b8185612509565b935061254b818560208601612519565b61255481611229565b840191505092915050565b5f610100820190506125735f83018b6114b8565b8181036020830152612585818a612527565b905081810360408301526125998189612527565b905081810360608301526125ad8188612527565b905081810360808301526125c18187612527565b905081810360a08301526125d58186612527565b905081810360c08301526125e98185612527565b905081810360e08301526125fd8184612527565b90509998505050505050505050565b5f8151905061261a816115fc565b92915050565b5f60208284031215612635576126346111ea565b5b5f6126428482850161260c565b91505092915050565b5f60a08201905061265e5f83018861183c565b61266b602083018761183c565b612678604083018661183c565b6126856060830185612352565b61269260808301846122dc565b9695505050505050565b5f6020820190506126af5f830184612352565b92915050565b5f5ffd5b5f815190506126c7816114ef565b92915050565b5f815190506126db81611e71565b92915050565b5f61016082840312156126f7576126f66126b5565b5b612702610160611297565b90505f61271184828501612304565b5f830152506020612724848285016124c0565b6020830152506040612738848285016124c0565b604083015250606061274c848285016126b9565b6060830152506080612760848285016124c0565b60808301525060a061277484828501612304565b60a08301525060c0612788848285016124c0565b60c08301525060e061279c848285016126cd565b60e0830152506101006127b184828501612304565b610100830152506101206127c7848285016126cd565b610120830152506101406127dd848285016126b9565b6101408301525092915050565b5f6101608284031215612800576127ff6111ea565b5b5f61280d848285016126e1565b91505092915050565b5f67ffffffffffffffff8211156128305761282f611239565b5b602082029050602081019050919050565b5f60608284031215612856576128556126b5565b5b6128606060611297565b90505f61286f84828501612304565b5f8301525060206128828482850161260c565b60208301525060406128968482850161260c565b60408301525092915050565b5f6128b46128af84612816565b611297565b905080838252602082019050606084028301858111156128d7576128d66112dc565b5b835b8181101561290057806128ec8882612841565b8452602084019350506060810190506128d9565b5050509392505050565b5f82601f83011261291e5761291d611225565b5b815161292e8482602086016128a2565b91505092915050565b5f6020828403121561294c5761294b6111ea565b5b5f82015167ffffffffffffffff811115612969576129686111ee565b5b6129758482850161290a565b91505092915050565b61298781611baa565b82525050565b5f60e0820190506129a05f83018a61183c565b6129ad602083018961183c565b6129ba604083018861183c565b6129c76060830187612352565b6129d46080830186612343565b6129e160a083018561297e565b6129ee60c0830184612352565b98975050505050505050565b5f606082019050612a0d5f8301866115cb565b612a1a60208301856122dc565b612a2760408301846115cb565b949350505050565b5f67ffffffffffffffff821115612a4957612a48611239565b5b602082029050602081019050919050565b5f60408284031215612a6f57612a6e6126b5565b5b612a796040611297565b90505f612a8884828501612396565b5f830152506020612a9b848285016124c0565b60208301525092915050565b5f612ab9612ab484612a2f565b611297565b90508083825260208201905060408402830185811115612adc57612adb6112dc565b5b835b81811015612b055780612af18882612a5a565b845260208401935050604081019050612ade565b5050509392505050565b5f82601f830112612b2357612b22611225565b5b8151612b33848260208601612aa7565b91505092915050565b5f60208284031215612b5157612b506111ea565b5b5f82015167ffffffffffffffff811115612b6e57612b6d6111ee565b5b612b7a84828501612b0f565b9150509291505056fea2646970667358221220768c64014d2253c661e44d07f480f7a203eb9e422f680d00272498325a4f6ad964736f6c634300081e0033"; +export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b50612c848061001c5f395ff3fe6080604052600436106101e1575f3560e01c80637d691e3011610101578063b1f789ef11610094578063d75e3e0d11610063578063d75e3e0d146106f0578063db1d0fd51461071a578063ec55688914610744578063fc6679fb1461076e576101e1565b8063b1f789ef14610644578063bfe252a214610680578063caf2ebf2146106aa578063cd6f4eb1146106d4576101e1565b80639f246f6f116100d05780639f246f6f14610598578063a2176276146105d4578063ac3166bf146105fe578063afed65f914610628576101e1565b80637d691e30146104c85780638bba466c146104e457806394e3ac6f14610520578063998538c41461055c576101e1565b80634c378a96116101795780635e25f3f8116101485780635e25f3f81461041857806369e38bc31461043457806371214e27146104705780637444dadc1461048c576101e1565b80634c378a961461035e5780634cf088d9146103885780635b53ddde146103b25780635b7210c5146103dc576101e1565b80631f193572116101b55780631f193572146102ad5780631fc9b141146102e95780633175bd98146103055780634054ecca14610342576101e1565b80620ae759146101e55780630494cd9a1461020d57806304eaf18c146102495780630cadeda514610285575b5f5ffd5b3480156101f0575f5ffd5b5061020b60048036038101906102069190611476565b610798565b005b348015610218575f5ffd5b50610233600480360381019061022e9190611558565b610808565b6040516102409190611592565b60405180910390f35b348015610254575f5ffd5b5061026f600480360381019061026a91906115e2565b61088a565b60405161027c919061162f565b60405180910390f35b348015610290575f5ffd5b506102ab60048036038101906102a69190611681565b61090c565b005b3480156102b8575f5ffd5b506102d360048036038101906102ce91906115e2565b61097d565b6040516102e091906116e0565b60405180910390f35b61030360048036038101906102fe919061172c565b6109ff565b005b348015610310575f5ffd5b5061032b6004803603810190610326919061177c565b610a70565b6040516103399291906117e4565b60405180910390f35b61035c6004803603810190610357919061180b565b610af8565b005b348015610369575f5ffd5b50610372610b68565b60405161037f91906118a4565b60405180910390f35b348015610393575f5ffd5b5061039c610b6e565b6040516103a991906118dd565b60405180910390f35b3480156103bd575f5ffd5b506103c6610b74565b6040516103d39190611916565b60405180910390f35b3480156103e7575f5ffd5b5061040260048036038101906103fd919061177c565b610b7a565b60405161040f919061162f565b60405180910390f35b610432600480360381019061042d91906119df565b610bff565b005b34801561043f575f5ffd5b5061045a600480360381019061045591906115e2565b610c7f565b6040516104679190611b63565b60405180910390f35b61048a60048036038101906104859190611ba6565b610d01565b005b348015610497575f5ffd5b506104b260048036038101906104ad91906115e2565b610d78565b6040516104bf919061162f565b60405180910390f35b6104e260048036038101906104dd919061172c565b610dfa565b005b3480156104ef575f5ffd5b5061050a60048036038101906105059190611c1d565b610e6b565b6040516105179190611d6e565b60405180910390f35b34801561052b575f5ffd5b5061054660048036038101906105419190611d88565b610ef5565b6040516105539190611eaa565b60405180910390f35b348015610567575f5ffd5b50610582600480360381019061057d9190611d88565b610f7b565b60405161058f9190611b63565b60405180910390f35b3480156105a3575f5ffd5b506105be60048036038101906105b99190611d88565b610ffd565b6040516105cb9190611b63565b60405180910390f35b3480156105df575f5ffd5b506105e861107f565b6040516105f59190611eea565b60405180910390f35b348015610609575f5ffd5b50610612611085565b60405161061f9190611f23565b60405180910390f35b610642600480360381019061063d9190611f66565b61108b565b005b34801561064f575f5ffd5b5061066a60048036038101906106659190612003565b611108565b6040516106779190612137565b60405180910390f35b34801561068b575f5ffd5b50610694611194565b6040516106a19190612177565b60405180910390f35b3480156106b5575f5ffd5b506106be61119a565b6040516106cb91906121b0565b60405180910390f35b6106ee60048036038101906106e99190611d88565b6111a0565b005b3480156106fb575f5ffd5b5061070461120d565b60405161071191906121e9565b60405180910390f35b348015610725575f5ffd5b5061072e611213565b60405161073b9190612222565b60405180910390f35b34801561074f575f5ffd5b50610758611219565b604051610765919061225b565b60405180910390f35b348015610779575f5ffd5b5061078261121f565b60405161078f9190612294565b60405180910390f35b61080b73ffffffffffffffffffffffffffffffffffffffff16620ae7598484846040518463ffffffff1660e01b81526004016107d693929190612364565b5f604051808303815f87803b1580156107ed575f5ffd5b505af11580156107ff573d5f5f3e3d5ffd5b50505050505050565b5f61080c73ffffffffffffffffffffffffffffffffffffffff16630494cd9a836040518263ffffffff1660e01b815260040161084491906123b6565b602060405180830381865afa15801561085f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088391906123e3565b9050919050565b5f61080373ffffffffffffffffffffffffffffffffffffffff166304eaf18c836040518263ffffffff1660e01b81526004016108c691906116e0565b602060405180830381865afa1580156108e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109059190612422565b9050919050565b61080b73ffffffffffffffffffffffffffffffffffffffff16630cadeda58484846040518463ffffffff1660e01b815260040161094b9392919061246b565b5f604051808303815f87803b158015610962575f5ffd5b505af1158015610974573d5f5f3e3d5ffd5b50505050505050565b5f61080273ffffffffffffffffffffffffffffffffffffffff16631f193572836040518263ffffffff1660e01b81526004016109b991906116e0565b602060405180830381865afa1580156109d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f891906124b4565b9050919050565b61080573ffffffffffffffffffffffffffffffffffffffff16631fc9b1418484846040518463ffffffff1660e01b8152600401610a3e939291906124df565b5f604051808303815f87803b158015610a55575f5ffd5b505af1158015610a67573d5f5f3e3d5ffd5b50505050505050565b5f5f61080a73ffffffffffffffffffffffffffffffffffffffff16633175bd9885856040518363ffffffff1660e01b8152600401610aaf929190612514565b6040805180830381865afa158015610ac9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aed9190612565565b915091509250929050565b61080473ffffffffffffffffffffffffffffffffffffffff16634054ecca3484846040518463ffffffff1660e01b8152600401610b369291906125a3565b5f604051808303818588803b158015610b4d575f5ffd5b505af1158015610b5f573d5f5f3e3d5ffd5b50505050505050565b61080481565b61080581565b61080a81565b5f61080973ffffffffffffffffffffffffffffffffffffffff16635b7210c584846040518363ffffffff1660e01b8152600401610bb8929190612514565b602060405180830381865afa158015610bd3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf79190612422565b905092915050565b61080373ffffffffffffffffffffffffffffffffffffffff16631cf98c6b89898989898989896040518963ffffffff1660e01b8152600401610c4898979695949392919061262a565b5f604051808303815f87803b158015610c5f575f5ffd5b505af1158015610c71573d5f5f3e3d5ffd5b505050505050505050505050565b5f61080873ffffffffffffffffffffffffffffffffffffffff166369e38bc3836040518263ffffffff1660e01b8152600401610cbb91906116e0565b602060405180830381865afa158015610cd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa91906126eb565b9050919050565b61080973ffffffffffffffffffffffffffffffffffffffff1663127e1adb86868686866040518663ffffffff1660e01b8152600401610d44959493929190612716565b5f604051808303815f87803b158015610d5b575f5ffd5b505af1158015610d6d573d5f5f3e3d5ffd5b505050505050505050565b5f61080373ffffffffffffffffffffffffffffffffffffffff16637444dadc836040518263ffffffff1660e01b8152600401610db491906116e0565b602060405180830381865afa158015610dcf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df39190612422565b9050919050565b61080573ffffffffffffffffffffffffffffffffffffffff16637d691e308484846040518463ffffffff1660e01b8152600401610e39939291906124df565b5f604051808303815f87803b158015610e50575f5ffd5b505af1158015610e62573d5f5f3e3d5ffd5b50505050505050565b610e73611225565b61080973ffffffffffffffffffffffffffffffffffffffff16638bba466c836040518263ffffffff1660e01b8152600401610eae9190612767565b61016060405180830381865afa158015610eca573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eee91906128b5565b9050919050565b606061080b73ffffffffffffffffffffffffffffffffffffffff166394e3ac6f836040518263ffffffff1660e01b8152600401610f329190611592565b5f60405180830381865afa158015610f4c573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f749190612a02565b9050919050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663998538c4836040518263ffffffff1660e01b8152600401610fb79190611592565b602060405180830381865afa158015610fd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff691906126eb565b9050919050565b5f61080573ffffffffffffffffffffffffffffffffffffffff16639f246f6f836040518263ffffffff1660e01b81526004016110399190611592565b602060405180830381865afa158015611054573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107891906126eb565b9050919050565b61080681565b61080c81565b61080a73ffffffffffffffffffffffffffffffffffffffff1663afed65f9888888888888886040518863ffffffff1660e01b81526004016110d29796959493929190612a58565b5f604051808303815f87803b1580156110e9575f5ffd5b505af11580156110fb573d5f5f3e3d5ffd5b5050505050505050505050565b606061080673ffffffffffffffffffffffffffffffffffffffff1663b1f789ef8585856040518463ffffffff1660e01b815260040161114993929190612ac5565b5f60405180830381865afa158015611163573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061118b9190612c07565b90509392505050565b61080981565b61080381565b61080073ffffffffffffffffffffffffffffffffffffffff1663cd6f4eb134836040518363ffffffff1660e01b81526004016111dc9190611592565b5f604051808303818588803b1580156111f3575f5ffd5b505af1158015611205573d5f5f3e3d5ffd5b505050505050565b61080081565b61080881565b61080b81565b61080281565b6040518061016001604052805f81526020015f67ffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681526020015f81526020015f67ffffffffffffffff1681526020015f151581526020015f81526020015f151581526020015f63ffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6112cf816112bd565b81146112d9575f5ffd5b50565b5f813590506112ea816112c6565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61133a826112f4565b810181811067ffffffffffffffff8211171561135957611358611304565b5b80604052505050565b5f61136b6112ac565b90506113778282611331565b919050565b5f67ffffffffffffffff82111561139657611395611304565b5b602082029050602081019050919050565b5f5ffd5b5f60ff82169050919050565b6113c0816113ab565b81146113ca575f5ffd5b50565b5f813590506113db816113b7565b92915050565b5f6113f36113ee8461137c565b611362565b90508083825260208201905060208402830185811115611416576114156113a7565b5b835b8181101561143f578061142b88826113cd565b845260208401935050602081019050611418565b5050509392505050565b5f82601f83011261145d5761145c6112f0565b5b813561146d8482602086016113e1565b91505092915050565b5f5f5f6060848603121561148d5761148c6112b5565b5b5f61149a868287016112dc565b935050602084013567ffffffffffffffff8111156114bb576114ba6112b9565b5b6114c786828701611449565b925050604084013567ffffffffffffffff8111156114e8576114e76112b9565b5b6114f486828701611449565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611527826114fe565b9050919050565b6115378161151d565b8114611541575f5ffd5b50565b5f813590506115528161152e565b92915050565b5f6020828403121561156d5761156c6112b5565b5b5f61157a84828501611544565b91505092915050565b61158c816112bd565b82525050565b5f6020820190506115a55f830184611583565b92915050565b5f61ffff82169050919050565b6115c1816115ab565b81146115cb575f5ffd5b50565b5f813590506115dc816115b8565b92915050565b5f602082840312156115f7576115f66112b5565b5b5f611604848285016115ce565b91505092915050565b5f67ffffffffffffffff82169050919050565b6116298161160d565b82525050565b5f6020820190506116425f830184611620565b92915050565b5f63ffffffff82169050919050565b61166081611648565b811461166a575f5ffd5b50565b5f8135905061167b81611657565b92915050565b5f5f5f60608486031215611698576116976112b5565b5b5f6116a5868287016112dc565b93505060206116b6868287016113cd565b92505060406116c78682870161166d565b9150509250925092565b6116da816115ab565b82525050565b5f6020820190506116f35f8301846116d1565b92915050565b5f819050919050565b61170b816116f9565b8114611715575f5ffd5b50565b5f8135905061172681611702565b92915050565b5f5f5f60608486031215611743576117426112b5565b5b5f611750868287016112dc565b935050602061176186828701611718565b925050604061177286828701611718565b9150509250925092565b5f5f60408385031215611792576117916112b5565b5b5f61179f8582860161166d565b92505060206117b0858286016112dc565b9150509250929050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6117de816117ba565b82525050565b5f6040820190506117f75f8301856117d5565b61180460208301846117d5565b9392505050565b5f5f60408385031215611821576118206112b5565b5b5f61182e858286016115ce565b925050602061183f858286016112dc565b9150509250929050565b5f819050919050565b5f61186c611867611862846114fe565b611849565b6114fe565b9050919050565b5f61187d82611852565b9050919050565b5f61188e82611873565b9050919050565b61189e81611884565b82525050565b5f6020820190506118b75f830184611895565b92915050565b5f6118c782611873565b9050919050565b6118d7816118bd565b82525050565b5f6020820190506118f05f8301846118ce565b92915050565b5f61190082611873565b9050919050565b611910816118f6565b82525050565b5f6020820190506119295f830184611907565b92915050565b5f5ffd5b5f67ffffffffffffffff82111561194d5761194c611304565b5b611956826112f4565b9050602081019050919050565b828183375f83830152505050565b5f61198361197e84611933565b611362565b90508281526020810184848401111561199f5761199e61192f565b5b6119aa848285611963565b509392505050565b5f82601f8301126119c6576119c56112f0565b5b81356119d6848260208601611971565b91505092915050565b5f5f5f5f5f5f5f5f610100898b0312156119fc576119fb6112b5565b5b5f611a098b828c016112dc565b985050602089013567ffffffffffffffff811115611a2a57611a296112b9565b5b611a368b828c016119b2565b975050604089013567ffffffffffffffff811115611a5757611a566112b9565b5b611a638b828c016119b2565b965050606089013567ffffffffffffffff811115611a8457611a836112b9565b5b611a908b828c016119b2565b955050608089013567ffffffffffffffff811115611ab157611ab06112b9565b5b611abd8b828c016119b2565b94505060a089013567ffffffffffffffff811115611ade57611add6112b9565b5b611aea8b828c016119b2565b93505060c089013567ffffffffffffffff811115611b0b57611b0a6112b9565b5b611b178b828c016119b2565b92505060e089013567ffffffffffffffff811115611b3857611b376112b9565b5b611b448b828c016119b2565b9150509295985092959890939650565b611b5d816116f9565b82525050565b5f602082019050611b765f830184611b54565b92915050565b611b858161160d565b8114611b8f575f5ffd5b50565b5f81359050611ba081611b7c565b92915050565b5f5f5f5f5f60a08688031215611bbf57611bbe6112b5565b5b5f611bcc88828901611b92565b9550506020611bdd88828901611b92565b9450506040611bee88828901611b92565b9350506060611bff8882890161166d565b9250506080611c1088828901611544565b9150509295509295909350565b5f60208284031215611c3257611c316112b5565b5b5f611c3f8482850161166d565b91505092915050565b611c51816112bd565b82525050565b611c608161160d565b82525050565b611c6f81611648565b82525050565b5f8115159050919050565b611c8981611c75565b82525050565b61016082015f820151611ca45f850182611c48565b506020820151611cb76020850182611c57565b506040820151611cca6040850182611c57565b506060820151611cdd6060850182611c66565b506080820151611cf06080850182611c57565b5060a0820151611d0360a0850182611c48565b5060c0820151611d1660c0850182611c57565b5060e0820151611d2960e0850182611c80565b50610100820151611d3e610100850182611c48565b50610120820151611d53610120850182611c80565b50610140820151611d68610140850182611c66565b50505050565b5f61016082019050611d825f830184611c8f565b92915050565b5f60208284031215611d9d57611d9c6112b5565b5b5f611daa848285016112dc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611de5816116f9565b82525050565b606082015f820151611dff5f850182611c48565b506020820151611e126020850182611ddc565b506040820151611e256040850182611ddc565b50505050565b5f611e368383611deb565b60608301905092915050565b5f602082019050919050565b5f611e5882611db3565b611e628185611dbd565b9350611e6d83611dcd565b805f5b83811015611e9d578151611e848882611e2b565b9750611e8f83611e42565b925050600181019050611e70565b5085935050505092915050565b5f6020820190508181035f830152611ec28184611e4e565b905092915050565b5f611ed482611873565b9050919050565b611ee481611eca565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f611f0d82611873565b9050919050565b611f1d81611f03565b82525050565b5f602082019050611f365f830184611f14565b92915050565b611f4581611c75565b8114611f4f575f5ffd5b50565b5f81359050611f6081611f3c565b92915050565b5f5f5f5f5f5f5f60e0888a031215611f8157611f806112b5565b5b5f611f8e8a828b01611b92565b9750506020611f9f8a828b01611b92565b9650506040611fb08a828b01611b92565b9550506060611fc18a828b0161166d565b9450506080611fd28a828b016113cd565b93505060a0611fe38a828b01611f52565b92505060c0611ff48a828b0161166d565b91505092959891949750929550565b5f5f5f6060848603121561201a576120196112b5565b5b5f612027868287016115ce565b935050602061203886828701611544565b9250506040612049868287016115ce565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612085816115ab565b82525050565b604082015f82015161209f5f85018261207c565b5060208201516120b26020850182611c57565b50505050565b5f6120c3838361208b565b60408301905092915050565b5f602082019050919050565b5f6120e582612053565b6120ef818561205d565b93506120fa8361206d565b805f5b8381101561212a57815161211188826120b8565b975061211c836120cf565b9250506001810190506120fd565b5085935050505092915050565b5f6020820190508181035f83015261214f81846120db565b905092915050565b5f61216182611873565b9050919050565b61217181612157565b82525050565b5f60208201905061218a5f830184612168565b92915050565b5f61219a82611873565b9050919050565b6121aa81612190565b82525050565b5f6020820190506121c35f8301846121a1565b92915050565b5f6121d382611873565b9050919050565b6121e3816121c9565b82525050565b5f6020820190506121fc5f8301846121da565b92915050565b5f61220c82611873565b9050919050565b61221c81612202565b82525050565b5f6020820190506122355f830184612213565b92915050565b5f61224582611873565b9050919050565b6122558161223b565b82525050565b5f60208201905061226e5f83018461224c565b92915050565b5f61227e82611873565b9050919050565b61228e81612274565b82525050565b5f6020820190506122a75f830184612285565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6122df816113ab565b82525050565b5f6122f083836122d6565b60208301905092915050565b5f602082019050919050565b5f612312826122ad565b61231c81856122b7565b9350612327836122c7565b805f5b8381101561235757815161233e88826122e5565b9750612349836122fc565b92505060018101905061232a565b5085935050505092915050565b5f6060820190506123775f830186611583565b81810360208301526123898185612308565b9050818103604083015261239d8184612308565b9050949350505050565b6123b08161151d565b82525050565b5f6020820190506123c95f8301846123a7565b92915050565b5f815190506123dd816112c6565b92915050565b5f602082840312156123f8576123f76112b5565b5b5f612405848285016123cf565b91505092915050565b5f8151905061241c81611b7c565b92915050565b5f60208284031215612437576124366112b5565b5b5f6124448482850161240e565b91505092915050565b612456816113ab565b82525050565b61246581611648565b82525050565b5f60608201905061247e5f830186611583565b61248b602083018561244d565b612498604083018461245c565b949350505050565b5f815190506124ae816115b8565b92915050565b5f602082840312156124c9576124c86112b5565b5b5f6124d6848285016124a0565b91505092915050565b5f6060820190506124f25f830186611583565b6124ff6020830185611b54565b61250c6040830184611b54565b949350505050565b5f6040820190506125275f83018561245c565b6125346020830184611583565b9392505050565b612544816117ba565b811461254e575f5ffd5b50565b5f8151905061255f8161253b565b92915050565b5f5f6040838503121561257b5761257a6112b5565b5b5f61258885828601612551565b925050602061259985828601612551565b9150509250929050565b5f6040820190506125b65f8301856116d1565b6125c36020830184611583565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6125fc826125ca565b61260681856125d4565b93506126168185602086016125e4565b61261f816112f4565b840191505092915050565b5f6101008201905061263e5f83018b611583565b8181036020830152612650818a6125f2565b9050818103604083015261266481896125f2565b9050818103606083015261267881886125f2565b9050818103608083015261268c81876125f2565b905081810360a08301526126a081866125f2565b905081810360c08301526126b481856125f2565b905081810360e08301526126c881846125f2565b90509998505050505050505050565b5f815190506126e581611702565b92915050565b5f60208284031215612700576126ff6112b5565b5b5f61270d848285016126d7565b91505092915050565b5f60a0820190506127295f830188611620565b6127366020830187611620565b6127436040830186611620565b612750606083018561245c565b61275d60808301846123a7565b9695505050505050565b5f60208201905061277a5f83018461245c565b92915050565b5f5ffd5b5f8151905061279281611657565b92915050565b5f815190506127a681611f3c565b92915050565b5f61016082840312156127c2576127c1612780565b5b6127cd610160611362565b90505f6127dc848285016123cf565b5f8301525060206127ef8482850161240e565b60208301525060406128038482850161240e565b604083015250606061281784828501612784565b606083015250608061282b8482850161240e565b60808301525060a061283f848285016123cf565b60a08301525060c06128538482850161240e565b60c08301525060e061286784828501612798565b60e08301525061010061287c848285016123cf565b6101008301525061012061289284828501612798565b610120830152506101406128a884828501612784565b6101408301525092915050565b5f61016082840312156128cb576128ca6112b5565b5b5f6128d8848285016127ac565b91505092915050565b5f67ffffffffffffffff8211156128fb576128fa611304565b5b602082029050602081019050919050565b5f6060828403121561292157612920612780565b5b61292b6060611362565b90505f61293a848285016123cf565b5f83015250602061294d848285016126d7565b6020830152506040612961848285016126d7565b60408301525092915050565b5f61297f61297a846128e1565b611362565b905080838252602082019050606084028301858111156129a2576129a16113a7565b5b835b818110156129cb57806129b7888261290c565b8452602084019350506060810190506129a4565b5050509392505050565b5f82601f8301126129e9576129e86112f0565b5b81516129f984826020860161296d565b91505092915050565b5f60208284031215612a1757612a166112b5565b5b5f82015167ffffffffffffffff811115612a3457612a336112b9565b5b612a40848285016129d5565b91505092915050565b612a5281611c75565b82525050565b5f60e082019050612a6b5f83018a611620565b612a786020830189611620565b612a856040830188611620565b612a92606083018761245c565b612a9f608083018661244d565b612aac60a0830185612a49565b612ab960c083018461245c565b98975050505050505050565b5f606082019050612ad85f8301866116d1565b612ae560208301856123a7565b612af260408301846116d1565b949350505050565b5f67ffffffffffffffff821115612b1457612b13611304565b5b602082029050602081019050919050565b5f60408284031215612b3a57612b39612780565b5b612b446040611362565b90505f612b53848285016124a0565b5f830152506020612b668482850161240e565b60208301525092915050565b5f612b84612b7f84612afa565b611362565b90508083825260208201905060408402830185811115612ba757612ba66113a7565b5b835b81811015612bd05780612bbc8882612b25565b845260208401935050604081019050612ba9565b5050509392505050565b5f82601f830112612bee57612bed6112f0565b5b8151612bfe848260208601612b72565b91505092915050565b5f60208284031215612c1c57612c1b6112b5565b5b5f82015167ffffffffffffffff811115612c3957612c386112b9565b5b612c4584828501612bda565b9150509291505056fea2646970667358221220a2cc2a9c8dfdc11158aae6437dbe7c5bcd4cc87d88a338d0b3f1218b26b81b6b64736f6c63430008230033"; diff --git a/contract-tests/src/contracts/subnet.ts b/contract-tests/src/contracts/subnet.ts index a55bd5030f..0a7c5c575e 100644 --- a/contract-tests/src/contracts/subnet.ts +++ b/contract-tests/src/contracts/subnet.ts @@ -291,6 +291,25 @@ export const ISubnetABI = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint16", + name: "netuid", + type: "uint16", + }, + ], + name: "getNetworkRegisteredBlock", + outputs: [ + { + internalType: "uint64", + name: "", + type: "uint64", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { diff --git a/contract-tests/test/precompileWrapper.direct-call.test.ts b/contract-tests/test/precompileWrapper.direct-call.test.ts index fa1354f3ce..a6986dc48c 100644 --- a/contract-tests/test/precompileWrapper.direct-call.test.ts +++ b/contract-tests/test/precompileWrapper.direct-call.test.ts @@ -88,6 +88,15 @@ describe("PrecompileWrapper - Direct Call Tests", () => { assert.ok(rateLimitViaWrapper !== undefined, "Rate limit should be not undefined"); }); + it("Should get network registered block via wrapper", async () => { + const onchainValue = await api.query.SubtensorModule.NetworkRegisteredAt.getValue(netuid); + + const valueViaWrapper = Number(await wrapperContract.getNetworkRegisteredBlock(netuid)); + + assert.ok(valueViaWrapper > 0, "Network registered block should be greater than 0"); + assert.equal(valueViaWrapper, onchainValue, "Network registered block should match on-chain value"); + }); + it("Should register network with details via wrapper", async () => { const newHotkey = getRandomSubstrateKeypair(); await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(newHotkey.publicKey)); diff --git a/precompiles/src/subnet.rs b/precompiles/src/subnet.rs index b89d972eea..3772e5eb0b 100644 --- a/precompiles/src/subnet.rs +++ b/precompiles/src/subnet.rs @@ -5,7 +5,10 @@ use frame_support::traits::ConstU32; use frame_support::traits::IsSubType; use frame_system::RawOrigin; use pallet_evm::{AddressMapping, PrecompileHandle}; -use precompile_utils::{EvmResult, prelude::BoundedString}; +use precompile_utils::{ + EvmResult, + prelude::{BoundedString, RuntimeHelper}, +}; use sp_core::H256; use sp_runtime::traits::{AsSystemOriginSigner, Dispatchable}; use sp_std::vec; @@ -161,6 +164,18 @@ where ) } + #[precompile::public("getNetworkRegisteredBlock(uint16)")] + #[precompile::view] + fn get_network_registered_block( + handle: &mut impl PrecompileHandle, + netuid: u16, + ) -> EvmResult { + handle.record_cost(RuntimeHelper::::db_read_gas_cost())?; + Ok(pallet_subtensor::NetworkRegisteredAt::::get( + NetUid::from(netuid), + )) + } + #[precompile::public("getServingRateLimit(uint16)")] #[precompile::view] fn get_serving_rate_limit(_: &mut impl PrecompileHandle, netuid: u16) -> EvmResult { @@ -1225,4 +1240,28 @@ mod tests { ); }); } + + #[test] + fn subnet_precompile_gets_network_registered_block() { + new_test_ext().execute_with(|| { + let caller = addr_from_index(0x5003); + let netuid = setup_owner_subnet(caller); + let precompiles = precompiles::>(); + let precompile_addr = addr_from_index(SubnetPrecompile::::INDEX); + + let registration_block: u64 = 42; + pallet_subtensor::NetworkRegisteredAt::::insert(netuid, registration_block); + + assert_static_call( + &precompiles, + caller, + precompile_addr, + encode_with_selector( + selector_u32("getNetworkRegisteredBlock(uint16)"), + (TEST_NETUID_U16,), + ), + U256::from(registration_block), + ); + }); + } } From 12695dedda40e8b0217c68ebf7f8231f44cee119 Mon Sep 17 00:00:00 2001 From: fine135 Date: Fri, 22 May 2026 10:47:40 +0200 Subject: [PATCH 2/2] Rename getNetworkRegisteredBlock to getNetworkRegistrationBlock after review --- contract-tests/src/contracts/precompileWrapper.sol | 6 +++--- contract-tests/src/contracts/precompileWrapper.ts | 4 ++-- contract-tests/src/contracts/subnet.ts | 2 +- contract-tests/test/precompileWrapper.direct-call.test.ts | 2 +- precompiles/src/subnet.rs | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contract-tests/src/contracts/precompileWrapper.sol b/contract-tests/src/contracts/precompileWrapper.sol index a485de1543..57ee067ff5 100644 --- a/contract-tests/src/contracts/precompileWrapper.sol +++ b/contract-tests/src/contracts/precompileWrapper.sol @@ -35,7 +35,7 @@ interface ISubnet { string memory additional ) external payable; function getServingRateLimit(uint16 netuid) external view returns (uint64); - function getNetworkRegisteredBlock(uint16 netuid) external view returns (uint64); + function getNetworkRegistrationBlock(uint16 netuid) external view returns (uint64); } interface INeuron { @@ -224,8 +224,8 @@ contract PrecompileWrapper { return subnet.getServingRateLimit(netuid); } - function getNetworkRegisteredBlock(uint16 netuid) external view returns (uint64) { - return subnet.getNetworkRegisteredBlock(netuid); + function getNetworkRegistrationBlock(uint16 netuid) external view returns (uint64) { + return subnet.getNetworkRegistrationBlock(netuid); } // ============ Neuron Functions ============ diff --git a/contract-tests/src/contracts/precompileWrapper.ts b/contract-tests/src/contracts/precompileWrapper.ts index ed382014de..3e41c5aa02 100644 --- a/contract-tests/src/contracts/precompileWrapper.ts +++ b/contract-tests/src/contracts/precompileWrapper.ts @@ -421,7 +421,7 @@ export const PRECOMPILE_WRAPPER_ABI = [ "type": "uint16" } ], - "name": "getNetworkRegisteredBlock", + "name": "getNetworkRegistrationBlock", "outputs": [ { "internalType": "uint64", @@ -730,4 +730,4 @@ export const PRECOMPILE_WRAPPER_ABI = [ } ]; -export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b50612c848061001c5f395ff3fe6080604052600436106101e1575f3560e01c80637d691e3011610101578063b1f789ef11610094578063d75e3e0d11610063578063d75e3e0d146106f0578063db1d0fd51461071a578063ec55688914610744578063fc6679fb1461076e576101e1565b8063b1f789ef14610644578063bfe252a214610680578063caf2ebf2146106aa578063cd6f4eb1146106d4576101e1565b80639f246f6f116100d05780639f246f6f14610598578063a2176276146105d4578063ac3166bf146105fe578063afed65f914610628576101e1565b80637d691e30146104c85780638bba466c146104e457806394e3ac6f14610520578063998538c41461055c576101e1565b80634c378a96116101795780635e25f3f8116101485780635e25f3f81461041857806369e38bc31461043457806371214e27146104705780637444dadc1461048c576101e1565b80634c378a961461035e5780634cf088d9146103885780635b53ddde146103b25780635b7210c5146103dc576101e1565b80631f193572116101b55780631f193572146102ad5780631fc9b141146102e95780633175bd98146103055780634054ecca14610342576101e1565b80620ae759146101e55780630494cd9a1461020d57806304eaf18c146102495780630cadeda514610285575b5f5ffd5b3480156101f0575f5ffd5b5061020b60048036038101906102069190611476565b610798565b005b348015610218575f5ffd5b50610233600480360381019061022e9190611558565b610808565b6040516102409190611592565b60405180910390f35b348015610254575f5ffd5b5061026f600480360381019061026a91906115e2565b61088a565b60405161027c919061162f565b60405180910390f35b348015610290575f5ffd5b506102ab60048036038101906102a69190611681565b61090c565b005b3480156102b8575f5ffd5b506102d360048036038101906102ce91906115e2565b61097d565b6040516102e091906116e0565b60405180910390f35b61030360048036038101906102fe919061172c565b6109ff565b005b348015610310575f5ffd5b5061032b6004803603810190610326919061177c565b610a70565b6040516103399291906117e4565b60405180910390f35b61035c6004803603810190610357919061180b565b610af8565b005b348015610369575f5ffd5b50610372610b68565b60405161037f91906118a4565b60405180910390f35b348015610393575f5ffd5b5061039c610b6e565b6040516103a991906118dd565b60405180910390f35b3480156103bd575f5ffd5b506103c6610b74565b6040516103d39190611916565b60405180910390f35b3480156103e7575f5ffd5b5061040260048036038101906103fd919061177c565b610b7a565b60405161040f919061162f565b60405180910390f35b610432600480360381019061042d91906119df565b610bff565b005b34801561043f575f5ffd5b5061045a600480360381019061045591906115e2565b610c7f565b6040516104679190611b63565b60405180910390f35b61048a60048036038101906104859190611ba6565b610d01565b005b348015610497575f5ffd5b506104b260048036038101906104ad91906115e2565b610d78565b6040516104bf919061162f565b60405180910390f35b6104e260048036038101906104dd919061172c565b610dfa565b005b3480156104ef575f5ffd5b5061050a60048036038101906105059190611c1d565b610e6b565b6040516105179190611d6e565b60405180910390f35b34801561052b575f5ffd5b5061054660048036038101906105419190611d88565b610ef5565b6040516105539190611eaa565b60405180910390f35b348015610567575f5ffd5b50610582600480360381019061057d9190611d88565b610f7b565b60405161058f9190611b63565b60405180910390f35b3480156105a3575f5ffd5b506105be60048036038101906105b99190611d88565b610ffd565b6040516105cb9190611b63565b60405180910390f35b3480156105df575f5ffd5b506105e861107f565b6040516105f59190611eea565b60405180910390f35b348015610609575f5ffd5b50610612611085565b60405161061f9190611f23565b60405180910390f35b610642600480360381019061063d9190611f66565b61108b565b005b34801561064f575f5ffd5b5061066a60048036038101906106659190612003565b611108565b6040516106779190612137565b60405180910390f35b34801561068b575f5ffd5b50610694611194565b6040516106a19190612177565b60405180910390f35b3480156106b5575f5ffd5b506106be61119a565b6040516106cb91906121b0565b60405180910390f35b6106ee60048036038101906106e99190611d88565b6111a0565b005b3480156106fb575f5ffd5b5061070461120d565b60405161071191906121e9565b60405180910390f35b348015610725575f5ffd5b5061072e611213565b60405161073b9190612222565b60405180910390f35b34801561074f575f5ffd5b50610758611219565b604051610765919061225b565b60405180910390f35b348015610779575f5ffd5b5061078261121f565b60405161078f9190612294565b60405180910390f35b61080b73ffffffffffffffffffffffffffffffffffffffff16620ae7598484846040518463ffffffff1660e01b81526004016107d693929190612364565b5f604051808303815f87803b1580156107ed575f5ffd5b505af11580156107ff573d5f5f3e3d5ffd5b50505050505050565b5f61080c73ffffffffffffffffffffffffffffffffffffffff16630494cd9a836040518263ffffffff1660e01b815260040161084491906123b6565b602060405180830381865afa15801561085f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088391906123e3565b9050919050565b5f61080373ffffffffffffffffffffffffffffffffffffffff166304eaf18c836040518263ffffffff1660e01b81526004016108c691906116e0565b602060405180830381865afa1580156108e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109059190612422565b9050919050565b61080b73ffffffffffffffffffffffffffffffffffffffff16630cadeda58484846040518463ffffffff1660e01b815260040161094b9392919061246b565b5f604051808303815f87803b158015610962575f5ffd5b505af1158015610974573d5f5f3e3d5ffd5b50505050505050565b5f61080273ffffffffffffffffffffffffffffffffffffffff16631f193572836040518263ffffffff1660e01b81526004016109b991906116e0565b602060405180830381865afa1580156109d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f891906124b4565b9050919050565b61080573ffffffffffffffffffffffffffffffffffffffff16631fc9b1418484846040518463ffffffff1660e01b8152600401610a3e939291906124df565b5f604051808303815f87803b158015610a55575f5ffd5b505af1158015610a67573d5f5f3e3d5ffd5b50505050505050565b5f5f61080a73ffffffffffffffffffffffffffffffffffffffff16633175bd9885856040518363ffffffff1660e01b8152600401610aaf929190612514565b6040805180830381865afa158015610ac9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aed9190612565565b915091509250929050565b61080473ffffffffffffffffffffffffffffffffffffffff16634054ecca3484846040518463ffffffff1660e01b8152600401610b369291906125a3565b5f604051808303818588803b158015610b4d575f5ffd5b505af1158015610b5f573d5f5f3e3d5ffd5b50505050505050565b61080481565b61080581565b61080a81565b5f61080973ffffffffffffffffffffffffffffffffffffffff16635b7210c584846040518363ffffffff1660e01b8152600401610bb8929190612514565b602060405180830381865afa158015610bd3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf79190612422565b905092915050565b61080373ffffffffffffffffffffffffffffffffffffffff16631cf98c6b89898989898989896040518963ffffffff1660e01b8152600401610c4898979695949392919061262a565b5f604051808303815f87803b158015610c5f575f5ffd5b505af1158015610c71573d5f5f3e3d5ffd5b505050505050505050505050565b5f61080873ffffffffffffffffffffffffffffffffffffffff166369e38bc3836040518263ffffffff1660e01b8152600401610cbb91906116e0565b602060405180830381865afa158015610cd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa91906126eb565b9050919050565b61080973ffffffffffffffffffffffffffffffffffffffff1663127e1adb86868686866040518663ffffffff1660e01b8152600401610d44959493929190612716565b5f604051808303815f87803b158015610d5b575f5ffd5b505af1158015610d6d573d5f5f3e3d5ffd5b505050505050505050565b5f61080373ffffffffffffffffffffffffffffffffffffffff16637444dadc836040518263ffffffff1660e01b8152600401610db491906116e0565b602060405180830381865afa158015610dcf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df39190612422565b9050919050565b61080573ffffffffffffffffffffffffffffffffffffffff16637d691e308484846040518463ffffffff1660e01b8152600401610e39939291906124df565b5f604051808303815f87803b158015610e50575f5ffd5b505af1158015610e62573d5f5f3e3d5ffd5b50505050505050565b610e73611225565b61080973ffffffffffffffffffffffffffffffffffffffff16638bba466c836040518263ffffffff1660e01b8152600401610eae9190612767565b61016060405180830381865afa158015610eca573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eee91906128b5565b9050919050565b606061080b73ffffffffffffffffffffffffffffffffffffffff166394e3ac6f836040518263ffffffff1660e01b8152600401610f329190611592565b5f60405180830381865afa158015610f4c573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f749190612a02565b9050919050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663998538c4836040518263ffffffff1660e01b8152600401610fb79190611592565b602060405180830381865afa158015610fd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff691906126eb565b9050919050565b5f61080573ffffffffffffffffffffffffffffffffffffffff16639f246f6f836040518263ffffffff1660e01b81526004016110399190611592565b602060405180830381865afa158015611054573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107891906126eb565b9050919050565b61080681565b61080c81565b61080a73ffffffffffffffffffffffffffffffffffffffff1663afed65f9888888888888886040518863ffffffff1660e01b81526004016110d29796959493929190612a58565b5f604051808303815f87803b1580156110e9575f5ffd5b505af11580156110fb573d5f5f3e3d5ffd5b5050505050505050505050565b606061080673ffffffffffffffffffffffffffffffffffffffff1663b1f789ef8585856040518463ffffffff1660e01b815260040161114993929190612ac5565b5f60405180830381865afa158015611163573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061118b9190612c07565b90509392505050565b61080981565b61080381565b61080073ffffffffffffffffffffffffffffffffffffffff1663cd6f4eb134836040518363ffffffff1660e01b81526004016111dc9190611592565b5f604051808303818588803b1580156111f3575f5ffd5b505af1158015611205573d5f5f3e3d5ffd5b505050505050565b61080081565b61080881565b61080b81565b61080281565b6040518061016001604052805f81526020015f67ffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f63ffffffff1681526020015f67ffffffffffffffff1681526020015f81526020015f67ffffffffffffffff1681526020015f151581526020015f81526020015f151581526020015f63ffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6112cf816112bd565b81146112d9575f5ffd5b50565b5f813590506112ea816112c6565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61133a826112f4565b810181811067ffffffffffffffff8211171561135957611358611304565b5b80604052505050565b5f61136b6112ac565b90506113778282611331565b919050565b5f67ffffffffffffffff82111561139657611395611304565b5b602082029050602081019050919050565b5f5ffd5b5f60ff82169050919050565b6113c0816113ab565b81146113ca575f5ffd5b50565b5f813590506113db816113b7565b92915050565b5f6113f36113ee8461137c565b611362565b90508083825260208201905060208402830185811115611416576114156113a7565b5b835b8181101561143f578061142b88826113cd565b845260208401935050602081019050611418565b5050509392505050565b5f82601f83011261145d5761145c6112f0565b5b813561146d8482602086016113e1565b91505092915050565b5f5f5f6060848603121561148d5761148c6112b5565b5b5f61149a868287016112dc565b935050602084013567ffffffffffffffff8111156114bb576114ba6112b9565b5b6114c786828701611449565b925050604084013567ffffffffffffffff8111156114e8576114e76112b9565b5b6114f486828701611449565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611527826114fe565b9050919050565b6115378161151d565b8114611541575f5ffd5b50565b5f813590506115528161152e565b92915050565b5f6020828403121561156d5761156c6112b5565b5b5f61157a84828501611544565b91505092915050565b61158c816112bd565b82525050565b5f6020820190506115a55f830184611583565b92915050565b5f61ffff82169050919050565b6115c1816115ab565b81146115cb575f5ffd5b50565b5f813590506115dc816115b8565b92915050565b5f602082840312156115f7576115f66112b5565b5b5f611604848285016115ce565b91505092915050565b5f67ffffffffffffffff82169050919050565b6116298161160d565b82525050565b5f6020820190506116425f830184611620565b92915050565b5f63ffffffff82169050919050565b61166081611648565b811461166a575f5ffd5b50565b5f8135905061167b81611657565b92915050565b5f5f5f60608486031215611698576116976112b5565b5b5f6116a5868287016112dc565b93505060206116b6868287016113cd565b92505060406116c78682870161166d565b9150509250925092565b6116da816115ab565b82525050565b5f6020820190506116f35f8301846116d1565b92915050565b5f819050919050565b61170b816116f9565b8114611715575f5ffd5b50565b5f8135905061172681611702565b92915050565b5f5f5f60608486031215611743576117426112b5565b5b5f611750868287016112dc565b935050602061176186828701611718565b925050604061177286828701611718565b9150509250925092565b5f5f60408385031215611792576117916112b5565b5b5f61179f8582860161166d565b92505060206117b0858286016112dc565b9150509250929050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6117de816117ba565b82525050565b5f6040820190506117f75f8301856117d5565b61180460208301846117d5565b9392505050565b5f5f60408385031215611821576118206112b5565b5b5f61182e858286016115ce565b925050602061183f858286016112dc565b9150509250929050565b5f819050919050565b5f61186c611867611862846114fe565b611849565b6114fe565b9050919050565b5f61187d82611852565b9050919050565b5f61188e82611873565b9050919050565b61189e81611884565b82525050565b5f6020820190506118b75f830184611895565b92915050565b5f6118c782611873565b9050919050565b6118d7816118bd565b82525050565b5f6020820190506118f05f8301846118ce565b92915050565b5f61190082611873565b9050919050565b611910816118f6565b82525050565b5f6020820190506119295f830184611907565b92915050565b5f5ffd5b5f67ffffffffffffffff82111561194d5761194c611304565b5b611956826112f4565b9050602081019050919050565b828183375f83830152505050565b5f61198361197e84611933565b611362565b90508281526020810184848401111561199f5761199e61192f565b5b6119aa848285611963565b509392505050565b5f82601f8301126119c6576119c56112f0565b5b81356119d6848260208601611971565b91505092915050565b5f5f5f5f5f5f5f5f610100898b0312156119fc576119fb6112b5565b5b5f611a098b828c016112dc565b985050602089013567ffffffffffffffff811115611a2a57611a296112b9565b5b611a368b828c016119b2565b975050604089013567ffffffffffffffff811115611a5757611a566112b9565b5b611a638b828c016119b2565b965050606089013567ffffffffffffffff811115611a8457611a836112b9565b5b611a908b828c016119b2565b955050608089013567ffffffffffffffff811115611ab157611ab06112b9565b5b611abd8b828c016119b2565b94505060a089013567ffffffffffffffff811115611ade57611add6112b9565b5b611aea8b828c016119b2565b93505060c089013567ffffffffffffffff811115611b0b57611b0a6112b9565b5b611b178b828c016119b2565b92505060e089013567ffffffffffffffff811115611b3857611b376112b9565b5b611b448b828c016119b2565b9150509295985092959890939650565b611b5d816116f9565b82525050565b5f602082019050611b765f830184611b54565b92915050565b611b858161160d565b8114611b8f575f5ffd5b50565b5f81359050611ba081611b7c565b92915050565b5f5f5f5f5f60a08688031215611bbf57611bbe6112b5565b5b5f611bcc88828901611b92565b9550506020611bdd88828901611b92565b9450506040611bee88828901611b92565b9350506060611bff8882890161166d565b9250506080611c1088828901611544565b9150509295509295909350565b5f60208284031215611c3257611c316112b5565b5b5f611c3f8482850161166d565b91505092915050565b611c51816112bd565b82525050565b611c608161160d565b82525050565b611c6f81611648565b82525050565b5f8115159050919050565b611c8981611c75565b82525050565b61016082015f820151611ca45f850182611c48565b506020820151611cb76020850182611c57565b506040820151611cca6040850182611c57565b506060820151611cdd6060850182611c66565b506080820151611cf06080850182611c57565b5060a0820151611d0360a0850182611c48565b5060c0820151611d1660c0850182611c57565b5060e0820151611d2960e0850182611c80565b50610100820151611d3e610100850182611c48565b50610120820151611d53610120850182611c80565b50610140820151611d68610140850182611c66565b50505050565b5f61016082019050611d825f830184611c8f565b92915050565b5f60208284031215611d9d57611d9c6112b5565b5b5f611daa848285016112dc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611de5816116f9565b82525050565b606082015f820151611dff5f850182611c48565b506020820151611e126020850182611ddc565b506040820151611e256040850182611ddc565b50505050565b5f611e368383611deb565b60608301905092915050565b5f602082019050919050565b5f611e5882611db3565b611e628185611dbd565b9350611e6d83611dcd565b805f5b83811015611e9d578151611e848882611e2b565b9750611e8f83611e42565b925050600181019050611e70565b5085935050505092915050565b5f6020820190508181035f830152611ec28184611e4e565b905092915050565b5f611ed482611873565b9050919050565b611ee481611eca565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f611f0d82611873565b9050919050565b611f1d81611f03565b82525050565b5f602082019050611f365f830184611f14565b92915050565b611f4581611c75565b8114611f4f575f5ffd5b50565b5f81359050611f6081611f3c565b92915050565b5f5f5f5f5f5f5f60e0888a031215611f8157611f806112b5565b5b5f611f8e8a828b01611b92565b9750506020611f9f8a828b01611b92565b9650506040611fb08a828b01611b92565b9550506060611fc18a828b0161166d565b9450506080611fd28a828b016113cd565b93505060a0611fe38a828b01611f52565b92505060c0611ff48a828b0161166d565b91505092959891949750929550565b5f5f5f6060848603121561201a576120196112b5565b5b5f612027868287016115ce565b935050602061203886828701611544565b9250506040612049868287016115ce565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612085816115ab565b82525050565b604082015f82015161209f5f85018261207c565b5060208201516120b26020850182611c57565b50505050565b5f6120c3838361208b565b60408301905092915050565b5f602082019050919050565b5f6120e582612053565b6120ef818561205d565b93506120fa8361206d565b805f5b8381101561212a57815161211188826120b8565b975061211c836120cf565b9250506001810190506120fd565b5085935050505092915050565b5f6020820190508181035f83015261214f81846120db565b905092915050565b5f61216182611873565b9050919050565b61217181612157565b82525050565b5f60208201905061218a5f830184612168565b92915050565b5f61219a82611873565b9050919050565b6121aa81612190565b82525050565b5f6020820190506121c35f8301846121a1565b92915050565b5f6121d382611873565b9050919050565b6121e3816121c9565b82525050565b5f6020820190506121fc5f8301846121da565b92915050565b5f61220c82611873565b9050919050565b61221c81612202565b82525050565b5f6020820190506122355f830184612213565b92915050565b5f61224582611873565b9050919050565b6122558161223b565b82525050565b5f60208201905061226e5f83018461224c565b92915050565b5f61227e82611873565b9050919050565b61228e81612274565b82525050565b5f6020820190506122a75f830184612285565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6122df816113ab565b82525050565b5f6122f083836122d6565b60208301905092915050565b5f602082019050919050565b5f612312826122ad565b61231c81856122b7565b9350612327836122c7565b805f5b8381101561235757815161233e88826122e5565b9750612349836122fc565b92505060018101905061232a565b5085935050505092915050565b5f6060820190506123775f830186611583565b81810360208301526123898185612308565b9050818103604083015261239d8184612308565b9050949350505050565b6123b08161151d565b82525050565b5f6020820190506123c95f8301846123a7565b92915050565b5f815190506123dd816112c6565b92915050565b5f602082840312156123f8576123f76112b5565b5b5f612405848285016123cf565b91505092915050565b5f8151905061241c81611b7c565b92915050565b5f60208284031215612437576124366112b5565b5b5f6124448482850161240e565b91505092915050565b612456816113ab565b82525050565b61246581611648565b82525050565b5f60608201905061247e5f830186611583565b61248b602083018561244d565b612498604083018461245c565b949350505050565b5f815190506124ae816115b8565b92915050565b5f602082840312156124c9576124c86112b5565b5b5f6124d6848285016124a0565b91505092915050565b5f6060820190506124f25f830186611583565b6124ff6020830185611b54565b61250c6040830184611b54565b949350505050565b5f6040820190506125275f83018561245c565b6125346020830184611583565b9392505050565b612544816117ba565b811461254e575f5ffd5b50565b5f8151905061255f8161253b565b92915050565b5f5f6040838503121561257b5761257a6112b5565b5b5f61258885828601612551565b925050602061259985828601612551565b9150509250929050565b5f6040820190506125b65f8301856116d1565b6125c36020830184611583565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6125fc826125ca565b61260681856125d4565b93506126168185602086016125e4565b61261f816112f4565b840191505092915050565b5f6101008201905061263e5f83018b611583565b8181036020830152612650818a6125f2565b9050818103604083015261266481896125f2565b9050818103606083015261267881886125f2565b9050818103608083015261268c81876125f2565b905081810360a08301526126a081866125f2565b905081810360c08301526126b481856125f2565b905081810360e08301526126c881846125f2565b90509998505050505050505050565b5f815190506126e581611702565b92915050565b5f60208284031215612700576126ff6112b5565b5b5f61270d848285016126d7565b91505092915050565b5f60a0820190506127295f830188611620565b6127366020830187611620565b6127436040830186611620565b612750606083018561245c565b61275d60808301846123a7565b9695505050505050565b5f60208201905061277a5f83018461245c565b92915050565b5f5ffd5b5f8151905061279281611657565b92915050565b5f815190506127a681611f3c565b92915050565b5f61016082840312156127c2576127c1612780565b5b6127cd610160611362565b90505f6127dc848285016123cf565b5f8301525060206127ef8482850161240e565b60208301525060406128038482850161240e565b604083015250606061281784828501612784565b606083015250608061282b8482850161240e565b60808301525060a061283f848285016123cf565b60a08301525060c06128538482850161240e565b60c08301525060e061286784828501612798565b60e08301525061010061287c848285016123cf565b6101008301525061012061289284828501612798565b610120830152506101406128a884828501612784565b6101408301525092915050565b5f61016082840312156128cb576128ca6112b5565b5b5f6128d8848285016127ac565b91505092915050565b5f67ffffffffffffffff8211156128fb576128fa611304565b5b602082029050602081019050919050565b5f6060828403121561292157612920612780565b5b61292b6060611362565b90505f61293a848285016123cf565b5f83015250602061294d848285016126d7565b6020830152506040612961848285016126d7565b60408301525092915050565b5f61297f61297a846128e1565b611362565b905080838252602082019050606084028301858111156129a2576129a16113a7565b5b835b818110156129cb57806129b7888261290c565b8452602084019350506060810190506129a4565b5050509392505050565b5f82601f8301126129e9576129e86112f0565b5b81516129f984826020860161296d565b91505092915050565b5f60208284031215612a1757612a166112b5565b5b5f82015167ffffffffffffffff811115612a3457612a336112b9565b5b612a40848285016129d5565b91505092915050565b612a5281611c75565b82525050565b5f60e082019050612a6b5f83018a611620565b612a786020830189611620565b612a856040830188611620565b612a92606083018761245c565b612a9f608083018661244d565b612aac60a0830185612a49565b612ab960c083018461245c565b98975050505050505050565b5f606082019050612ad85f8301866116d1565b612ae560208301856123a7565b612af260408301846116d1565b949350505050565b5f67ffffffffffffffff821115612b1457612b13611304565b5b602082029050602081019050919050565b5f60408284031215612b3a57612b39612780565b5b612b446040611362565b90505f612b53848285016124a0565b5f830152506020612b668482850161240e565b60208301525092915050565b5f612b84612b7f84612afa565b611362565b90508083825260208201905060408402830185811115612ba757612ba66113a7565b5b835b81811015612bd05780612bbc8882612b25565b845260208401935050604081019050612ba9565b5050509392505050565b5f82601f830112612bee57612bed6112f0565b5b8151612bfe848260208601612b72565b91505092915050565b5f60208284031215612c1c57612c1b6112b5565b5b5f82015167ffffffffffffffff811115612c3957612c386112b9565b5b612c4584828501612bda565b9150509291505056fea2646970667358221220a2cc2a9c8dfdc11158aae6437dbe7c5bcd4cc87d88a338d0b3f1218b26b81b6b64736f6c63430008230033"; +export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b506119368061001c5f395ff3fe6080604052600436106101da575f3560e01c80638bba466c116100fd578063b1f789ef11610092578063d75e3e0d11610062578063d75e3e0d14610547578063db1d0fd51461055c578063ec55688914610571578063fc6679fb14610586575f5ffd5b8063b1f789ef146104de578063bfe252a21461050a578063caf2ebf21461051f578063cd6f4eb114610534575f5ffd5b8063a2176276116100cd578063a217627614610482578063ac3166bf14610497578063afed65f9146104ac578063b0c751b0146104bf575f5ffd5b80638bba466c146103ec57806394e3ac6f14610418578063998538c4146104445780639f246f6f14610463575f5ffd5b80634cf088d91161017357806369e38bc31161014357806369e38bc31461038857806371214e27146103a75780637444dadc146103ba5780637d691e30146103d9575f5ffd5b80634cf088d9146103145780635b53ddde146103295780635b7210c51461033e5780635e25f3f814610375575f5ffd5b80631fc9b141116101ae5780631fc9b141146102825780633175bd98146102955780634054ecca146102d45780634c378a96146102e7575f5ffd5b80620ae759146101de5780630494cd9a146101ff5780630cadeda5146102315780631f19357214610250575b5f5ffd5b3480156101e9575f5ffd5b506101fd6101f8366004610e85565b61059b565b005b34801561020a575f5ffd5b5061021e610219366004610f06565b6105f4565b6040519081526020015b60405180910390f35b34801561023c575f5ffd5b506101fd61024b366004610f33565b610665565b34801561025b575f5ffd5b5061026f61026a366004610f7f565b6106a0565b60405161ffff9091168152602001610228565b6101fd610290366004610f9a565b610705565b3480156102a0575f5ffd5b506102b46102af366004610fc3565b610739565b604080516001600160801b03938416815292909116602083015201610228565b6101fd6102e2366004610fed565b6107b3565b3480156102f2575f5ffd5b506102fc61080481565b6040516001600160a01b039091168152602001610228565b34801561031f575f5ffd5b506102fc61080581565b348015610334575f5ffd5b506102fc61080a81565b348015610349575f5ffd5b5061035d610358366004610fc3565b6107f7565b6040516001600160401b039091168152602001610228565b6101fd610383366004611074565b61086c565b348015610393575f5ffd5b5061021e6103a2366004610f7f565b6108d6565b6101fd6103b53660046111c2565b610901565b3480156103c5575f5ffd5b5061035d6103d4366004610f7f565b610989565b6101fd6103e7366004610f9a565b6109ef565b3480156103f7575f5ffd5b5061040b61040636600461122b565b610a23565b6040516102289190611246565b348015610423575f5ffd5b50610437610432366004611334565b610add565b604051610228919061134b565b34801561044f575f5ffd5b5061021e61045e366004611334565b610b42565b34801561046e575f5ffd5b5061021e61047d366004611334565b610b6a565b34801561048d575f5ffd5b506102fc61080681565b3480156104a2575f5ffd5b506102fc61080c81565b6101fd6104ba3660046113b6565b610b92565b3480156104ca575f5ffd5b5061035d6104d9366004610f7f565b610c26565b3480156104e9575f5ffd5b506104fd6104f8366004611445565b610c51565b6040516102289190611480565b348015610515575f5ffd5b506102fc61080981565b34801561052a575f5ffd5b506102fc61080381565b6101fd610542366004611334565b610cd8565b348015610552575f5ffd5b506102fc61080081565b348015610567575f5ffd5b506102fc61080881565b34801561057c575f5ffd5b506102fc61080b81565b348015610591575f5ffd5b506102fc61080281565b604051620ae75960e01b815261080b90620ae759906105c29086908690869060040161150d565b5f604051808303815f87803b1580156105d9575f5ffd5b505af11580156105eb573d5f5f3e3d5ffd5b50505050505050565b60405163024a66cd60e11b81526001600160a01b03821660048201525f9061080c90630494cd9a906024015b602060405180830381865afa15801561063b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611541565b92915050565b604051630cadeda560e01b81526004810184905260ff8316602482015263ffffffff8216604482015261080b90630cadeda5906064016105c2565b604051630f8c9ab960e11b815261ffff821660048201525f9061080290631f19357290602401602060405180830381865afa1580156106e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611558565b604051631fc9b14160e01b815260048101849052602481018390526044810182905261080590631fc9b141906064016105c2565b60405163062eb7b360e31b815263ffffffff83166004820152602481018290525f90819061080a90633175bd98906044016040805180830381865afa158015610784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611589565b915091509250929050565b60405163202a766560e11b815261ffff831660048201526024810182905261080490634054ecca9034906044015f604051808303818588803b1580156105d9575f5ffd5b604051635b7210c560e01b815263ffffffff83166004820152602481018290525f9061080990635b7210c590604401602060405180830381865afa158015610841573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086591906115c5565b9392505050565b604051631cf98c6b60e01b815261080390631cf98c6b9061089f908b908b908b908b908b908b908b908b9060040161160e565b5f604051808303815f87803b1580156108b6575f5ffd5b505af11580156108c8573d5f5f3e3d5ffd5b505050505050505050505050565b6040516369e38bc360e01b815261ffff821660048201525f90610808906369e38bc390602401610620565b60405163127e1adb60e01b81526001600160401b03808716600483015280861660248301528416604482015263ffffffff831660648201526001600160a01b03821660848201526108099063127e1adb9060a4015f604051808303815f87803b15801561096c575f5ffd5b505af115801561097e573d5f5f3e3d5ffd5b505050505050505050565b604051631d1136b760e21b815261ffff821660048201525f9061080390637444dadc906024015b602060405180830381865afa1580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906115c5565b6040516307d691e360e41b815260048101849052602481018390526044810182905261080590637d691e30906064016105c2565b60408051610160810182525f80825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082015290516322ee919b60e21b815263ffffffff8316600482015261080990638bba466c9060240161016060405180830381865afa158015610ab9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906116c3565b6040516394e3ac6f60e01b81526004810182905260609061080b906394e3ac6f906024015f60405180830381865afa158015610b1b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261065f919081019061178a565b6040516326614e3160e21b8152600481018290525f906108059063998538c490602401610620565b604051639f246f6f60e01b8152600481018290525f9061080590639f246f6f90602401610620565b60405163afed65f960e01b81526001600160401b03808916600483015280881660248301528616604482015263ffffffff808616606483015260ff8516608483015283151560a4830152821660c482015261080a9063afed65f99060e4015f604051808303815f87803b158015610c07575f5ffd5b505af1158015610c19573d5f5f3e3d5ffd5b5050505050505050505050565b604051630b0c751b60e41b815261ffff821660048201525f906108039063b0c751b0906024016109b0565b60405163b1f789ef60e01b815261ffff80851660048301526001600160a01b0384166024830152821660448201526060906108069063b1f789ef906064015f60405180830381865afa158015610ca9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd0919081019061183f565b949350505050565b60405163cd6f4eb160e01b8152600481018290526108009063cd6f4eb19034906024015f604051808303818588803b158015610d12575f5ffd5b505af1158015610d24573d5f5f3e3d5ffd5b505050505050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715610d6357610d63610d2c565b60405290565b604051606081016001600160401b0381118282101715610d6357610d63610d2c565b604080519081016001600160401b0381118282101715610d6357610d63610d2c565b604051601f8201601f191681016001600160401b0381118282101715610dd557610dd5610d2c565b604052919050565b5f6001600160401b03821115610df557610df5610d2c565b5060051b60200190565b803560ff81168114610e0f575f5ffd5b919050565b5f82601f830112610e23575f5ffd5b8135610e36610e3182610ddd565b610dad565b8082825260208201915060208360051b860101925085831115610e57575f5ffd5b602085015b83811015610e7b57610e6d81610dff565b835260209283019201610e5c565b5095945050505050565b5f5f5f60608486031215610e97575f5ffd5b8335925060208401356001600160401b03811115610eb3575f5ffd5b610ebf86828701610e14565b92505060408401356001600160401b03811115610eda575f5ffd5b610ee686828701610e14565b9150509250925092565b80356001600160a01b0381168114610e0f575f5ffd5b5f60208284031215610f16575f5ffd5b61086582610ef0565b63ffffffff81168114610f30575f5ffd5b50565b5f5f5f60608486031215610f45575f5ffd5b83359250610f5560208501610dff565b91506040840135610f6581610f1f565b809150509250925092565b61ffff81168114610f30575f5ffd5b5f60208284031215610f8f575f5ffd5b813561086581610f70565b5f5f5f60608486031215610fac575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215610fd4575f5ffd5b8235610fdf81610f1f565b946020939093013593505050565b5f5f60408385031215610ffe575f5ffd5b8235610fdf81610f70565b5f82601f830112611018575f5ffd5b81356001600160401b0381111561103157611031610d2c565b611044601f8201601f1916602001610dad565b818152846020838601011115611058575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f5f5f5f610100898b03121561108c575f5ffd5b8835975060208901356001600160401b038111156110a8575f5ffd5b6110b48b828c01611009565b97505060408901356001600160401b038111156110cf575f5ffd5b6110db8b828c01611009565b96505060608901356001600160401b038111156110f6575f5ffd5b6111028b828c01611009565b95505060808901356001600160401b0381111561111d575f5ffd5b6111298b828c01611009565b94505060a08901356001600160401b03811115611144575f5ffd5b6111508b828c01611009565b93505060c08901356001600160401b0381111561116b575f5ffd5b6111778b828c01611009565b92505060e08901356001600160401b03811115611192575f5ffd5b61119e8b828c01611009565b9150509295985092959890939650565b6001600160401b0381168114610f30575f5ffd5b5f5f5f5f5f60a086880312156111d6575f5ffd5b85356111e1816111ae565b945060208601356111f1816111ae565b93506040860135611201816111ae565b9250606086013561121181610f1f565b915061121f60808701610ef0565b90509295509295909350565b5f6020828403121561123b575f5ffd5b813561086581610f1f565b8151815260208083015161016083019161126a908401826001600160401b03169052565b50604083015161128560408401826001600160401b03169052565b50606083015161129d606084018263ffffffff169052565b5060808301516112b860808401826001600160401b03169052565b5060a083015160a083015260c08301516112dd60c08401826001600160401b03169052565b5060e08301516112f160e084018215159052565b5061010083015161010083015261012083015161131361012084018215159052565b5061014083015161132d61014084018263ffffffff169052565b5092915050565b5f60208284031215611344575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561139e57835180518452602081015160208501526040810151604085015250606083019250602084019350600181019050611364565b509095945050505050565b8015158114610f30575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156113cc575f5ffd5b87356113d7816111ae565b965060208801356113e7816111ae565b955060408801356113f7816111ae565b9450606088013561140781610f1f565b935061141560808901610dff565b925060a0880135611425816113a9565b915060c088013561143581610f1f565b8091505092959891949750929550565b5f5f5f60608486031215611457575f5ffd5b833561146281610f70565b925061147060208501610ef0565b91506040840135610f6581610f70565b602080825282518282018190525f918401906040840190835b8181101561139e578351805161ffff1684526020908101516001600160401b03168185015290930192604090920191600101611499565b5f8151808452602084019350602083015f5b8281101561150357815160ff168652602095860195909101906001016114e2565b5093949350505050565b838152606060208201525f61152560608301856114d0565b828103604084015261153781856114d0565b9695505050505050565b5f60208284031215611551575f5ffd5b5051919050565b5f60208284031215611568575f5ffd5b815161086581610f70565b80516001600160801b0381168114610e0f575f5ffd5b5f5f6040838503121561159a575f5ffd5b6115a383611573565b91506115b160208401611573565b90509250929050565b8051610e0f816111ae565b5f602082840312156115d5575f5ffd5b8151610865816111ae565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b88815261010060208201525f61162861010083018a6115e0565b828103604084015261163a818a6115e0565b9050828103606084015261164e81896115e0565b9050828103608084015261166281886115e0565b905082810360a084015261167681876115e0565b905082810360c084015261168a81866115e0565b905082810360e084015261169e81856115e0565b9b9a5050505050505050505050565b8051610e0f81610f1f565b8051610e0f816113a9565b5f6101608284031280156116d5575f5ffd5b506116de610d40565b825181526116ee602084016115ba565b60208201526116ff604084016115ba565b6040820152611710606084016116ad565b6060820152611721608084016115ba565b608082015260a0838101519082015261173c60c084016115ba565b60c082015261174d60e084016116b8565b60e0820152610100838101519082015261176a61012084016116b8565b61012082015261177d61014084016116ad565b6101408201529392505050565b5f6020828403121561179a575f5ffd5b81516001600160401b038111156117af575f5ffd5b8201601f810184136117bf575f5ffd5b80516117cd610e3182610ddd565b808282526020820191506020606084028501019250868311156117ee575f5ffd5b6020840193505b82841015611537576060848803121561180c575f5ffd5b611814610d69565b84518152602080860151818301526040808701519083015290835260609094019391909101906117f5565b5f6020828403121561184f575f5ffd5b81516001600160401b03811115611864575f5ffd5b8201601f81018413611874575f5ffd5b8051611882610e3182610ddd565b8082825260208201915060208360061b8501019250868311156118a3575f5ffd5b6020840193505b8284101561153757604084880312156118c1575f5ffd5b6118c9610d8b565b84516118d481610f70565b815260208501516118e4816111ae565b80602083015250808352506020820191506040840193506118aa56fea264697066735822122026460b0cf8f5e17c58e4083c1b1155431c8d2cb9962cd9d5f6105ce473df73ee64736f6c63430008230033"; diff --git a/contract-tests/src/contracts/subnet.ts b/contract-tests/src/contracts/subnet.ts index 0a7c5c575e..dd058dafe4 100644 --- a/contract-tests/src/contracts/subnet.ts +++ b/contract-tests/src/contracts/subnet.ts @@ -299,7 +299,7 @@ export const ISubnetABI = [ type: "uint16", }, ], - name: "getNetworkRegisteredBlock", + name: "getNetworkRegistrationBlock", outputs: [ { internalType: "uint64", diff --git a/contract-tests/test/precompileWrapper.direct-call.test.ts b/contract-tests/test/precompileWrapper.direct-call.test.ts index a6986dc48c..53bc21c41f 100644 --- a/contract-tests/test/precompileWrapper.direct-call.test.ts +++ b/contract-tests/test/precompileWrapper.direct-call.test.ts @@ -91,7 +91,7 @@ describe("PrecompileWrapper - Direct Call Tests", () => { it("Should get network registered block via wrapper", async () => { const onchainValue = await api.query.SubtensorModule.NetworkRegisteredAt.getValue(netuid); - const valueViaWrapper = Number(await wrapperContract.getNetworkRegisteredBlock(netuid)); + const valueViaWrapper = Number(await wrapperContract.getNetworkRegistrationBlock(netuid)); assert.ok(valueViaWrapper > 0, "Network registered block should be greater than 0"); assert.equal(valueViaWrapper, onchainValue, "Network registered block should match on-chain value"); diff --git a/precompiles/src/subnet.rs b/precompiles/src/subnet.rs index 3772e5eb0b..da9ff4c79b 100644 --- a/precompiles/src/subnet.rs +++ b/precompiles/src/subnet.rs @@ -164,9 +164,9 @@ where ) } - #[precompile::public("getNetworkRegisteredBlock(uint16)")] + #[precompile::public("getNetworkRegistrationBlock(uint16)")] #[precompile::view] - fn get_network_registered_block( + fn get_network_registration_block( handle: &mut impl PrecompileHandle, netuid: u16, ) -> EvmResult { @@ -1257,7 +1257,7 @@ mod tests { caller, precompile_addr, encode_with_selector( - selector_u32("getNetworkRegisteredBlock(uint16)"), + selector_u32("getNetworkRegistrationBlock(uint16)"), (TEST_NETUID_U16,), ), U256::from(registration_block),