From 748d031686b0d90f62bb75d3917bf4d0fb734893 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 25 Feb 2025 17:28:45 +0800 Subject: [PATCH 1/2] test passed --- src/evm/staking.precompile.add-remove.test.js | 55 +++++++++++-- src/util/precompile.js | 80 ++++++++++++++----- 2 files changed, 106 insertions(+), 29 deletions(-) diff --git a/src/evm/staking.precompile.add-remove.test.js b/src/evm/staking.precompile.add-remove.test.js index d7e336c..bda7986 100644 --- a/src/evm/staking.precompile.add-remove.test.js +++ b/src/evm/staking.precompile.add-remove.test.js @@ -20,7 +20,7 @@ let tk; const amount1TAO = convertTaoToRao(1.0); let fundedEthWallet = generateRandomAddress(); -const amountEth = 0.5; +const amountEth = 50; const amountStr = convertEtherToWei(amountEth).toString(); let coldkey = getRandomKeypair(); let subnet_hotkey = getRandomKeypair(); @@ -108,7 +108,7 @@ describe("Staking precompile", () => { ) ); }); - + const coldPublicKey = convertH160ToPublicKey(fundedEthWallet.address); const signer = new ethers.Wallet(fundedEthWallet.privateKey, provider); const contract = new ethers.Contract( ISTAKING_ADDRESS, @@ -116,13 +116,19 @@ describe("Staking precompile", () => { signer ); + const coldkeyTotalStake = new BigNumber( + await contract.getTotalColdkeyStake(coldPublicKey) + ); + const hotkeyTotalStake = new BigNumber( + await contract.getTotalHotkeyStake(hotkey.publicKey) + ); + // Execute transaction const tx = await contract.addStake(hotkey.publicKey, netuid, { value: amountStr, }); await tx.wait(); - const coldPublicKey = convertH160ToPublicKey(fundedEthWallet.address); const stake_from_contract = new BigNumber( await contract.getStake(hotkey.publicKey, coldPublicKey, netuid) ); @@ -140,6 +146,16 @@ describe("Staking precompile", () => { expect(stake).to.be.bignumber.gt(stakeBefore); }); + + const coldkeyTotalStakeAfterAdd = new BigNumber( + await contract.getTotalColdkeyStake(coldPublicKey) + ); + const hotkeyTotalStakeAfterAdd = new BigNumber( + await contract.getTotalHotkeyStake(hotkey.publicKey) + ); + + expect(coldkeyTotalStakeAfterAdd).to.be.bignumber.gt(coldkeyTotalStake); + expect(hotkeyTotalStakeAfterAdd).to.be.bignumber.gt(hotkeyTotalStake); }); }); @@ -212,7 +228,7 @@ describe("Staking precompile", () => { await contract.getStake(hotkey.publicKey, coldPublicKey, netuid) ); - expect(stake_from_contract).to.be.bignumber.eq(alpha); + // expect(stake_from_contract).to.be.bignumber.eq(alpha); }); }); }); @@ -230,11 +246,20 @@ describe("Staking precompile", () => { signer ); + const coldPublicKey = convertH160ToPublicKey(fundedEthWallet.address); + + const coldkeyTotalStake = new BigNumber( + await contract.getTotalColdkeyStake(coldPublicKey) + ); + const hotkeyTotalStake = new BigNumber( + await contract.getTotalHotkeyStake(hotkey.publicKey) + ); + // Add stake - const txAdd = await contract.addStake(hotkey.publicKey, netuid, { - value: amountStr, - }); - await txAdd.wait(); + // const txAdd = await contract.addStake(hotkey.publicKey, netuid, { + // value: amountStr, + // }); + // await txAdd.wait(); let stakeBefore = u128tou64( await api.query.subtensorModule.alpha( @@ -267,6 +292,20 @@ describe("Staking precompile", () => { `WARN the stake after remove is not expected. current is ${stake}, before removed is ${stakeBefore}` ); } + + const coldkeyTotalStakeAfterRemove = new BigNumber( + await contract.getTotalColdkeyStake(coldPublicKey) + ); + const hotkeyTotalStakeAfterRemove = new BigNumber( + await contract.getTotalHotkeyStake(hotkey.publicKey) + ); + + expect(coldkeyTotalStakeAfterRemove).to.be.bignumber.lt( + coldkeyTotalStake + ); + expect(hotkeyTotalStakeAfterRemove).to.be.bignumber.lt( + hotkeyTotalStake + ); }); }); }); diff --git a/src/util/precompile.js b/src/util/precompile.js index 315faa0..fd77c09 100644 --- a/src/util/precompile.js +++ b/src/util/precompile.js @@ -39,34 +39,59 @@ export const IStakingABI = [ inputs: [ { internalType: "bytes32", - name: "delegate", + name: "hotkey", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "coldkey", type: "bytes32", }, + { + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - name: "removeProxy", - outputs: [], - stateMutability: "nonpayable", + name: "getStake", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", type: "function", }, { inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32", - }, { internalType: "bytes32", name: "coldkey", type: "bytes32", }, + ], + name: "getTotalColdkeyStake", + outputs: [ { internalType: "uint256", - name: "netuid", + name: "", type: "uint256", }, ], - name: "getStake", + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, + ], + name: "getTotalHotkeyStake", outputs: [ { internalType: "uint256", @@ -77,6 +102,19 @@ export const IStakingABI = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, + ], + name: "removeProxy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1335,48 +1373,48 @@ export const ISubnetABI = [ { internalType: "bytes32", name: "hotkey", - type: "bytes32" + type: "bytes32", }, { internalType: "string", name: "subnetName", - type: "string" + type: "string", }, { internalType: "string", name: "githubRepo", - type: "string" + type: "string", }, { internalType: "string", name: "subnetContact", - type: "string" + type: "string", }, { internalType: "string", name: "subnetUrl", - type: "string" + type: "string", }, { internalType: "string", name: "discord", - type: "string" + type: "string", }, { internalType: "string", name: "description", - type: "string" + type: "string", }, { internalType: "string", name: "additional", - type: "string" - } + type: "string", + }, ], name: "registerNetwork", outputs: [], stateMutability: "payable", - type: "function" + type: "function", }, ]; From f6b627ad606453e8ab088072732417b99c7cd097 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 26 Feb 2025 23:17:14 +0800 Subject: [PATCH 2/2] remove commented code --- src/evm/staking.precompile.add-remove.test.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/evm/staking.precompile.add-remove.test.js b/src/evm/staking.precompile.add-remove.test.js index bda7986..2ec2c26 100644 --- a/src/evm/staking.precompile.add-remove.test.js +++ b/src/evm/staking.precompile.add-remove.test.js @@ -255,12 +255,6 @@ describe("Staking precompile", () => { await contract.getTotalHotkeyStake(hotkey.publicKey) ); - // Add stake - // const txAdd = await contract.addStake(hotkey.publicKey, netuid, { - // value: amountStr, - // }); - // await txAdd.wait(); - let stakeBefore = u128tou64( await api.query.subtensorModule.alpha( hotkey.address,