{"ok":true,"contract":{"address":"0xe41852a75e51812ada39c8d0aae18c7c59935c0d","contract_name":"LendingPoolV1","deployed":null,"fund":"0","fund_usd":"0.00000000","native_balance":"15560630000000000","network":"subtensor","first_seen":"1779197867","verified":true,"is_proxy":false,"implementation_address":null,"proxy_contract_name":"LendingPoolV1","implementation_contract_name":null,"deploy_tx_hash":"0xe0c6e92f0e80683ff95c707d998c4015bf626fbc68f51fab41460b6258beed5a","deployer_address":"0x67abfd77029276a2f297adc0543dc8673e800975","deploy_block_number":null,"deployed_at_timestamp":null,"deployed_at":null,"confidence":"precise","fetched_at":"2026-05-19T13:37:40.860Z","source_code":"// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\";\nimport \"./stakingV2.sol\";\nimport \"./balanceTransfer.sol\";\n\ncontract LendingPoolV1 is Ownable, ReentrancyGuard{\n    using ECDSA for bytes32;\n    using MessageHashUtils for bytes32;\n\n    bytes32 public CONTRACT_COLDKEY = bytes32(0);\n    bytes32 public TREASURY_COLDKEY = bytes32(0);\n    bytes32 public DEFAULT_DELEGATE_HOTKEY = bytes32(0);\n    address public MANAGER = address(0);\n    string public constant VERSION = \"v1\";\n    uint256 constant MAX_MINER_BOUND = 64;\n\n    bool public paused = false;\n    IStaking public immutable staking;\n    ISubtensorBalanceTransfer public immutable balanceTransfer;\n\n    mapping (address => mapping(uint256 => uint256)) public userBalance;\n    mapping (uint => uint256) public subnetAlphaBalance;\n\n    mapping (address => bytes32) public minerHotkey;\n    mapping (bytes32 => address[]) public minerAddresses;\n    mapping (bytes32 => uint8) public minerCount;\n    mapping (address => bool) public minerBound;\n\n    event DepositAlpha(\n        address indexed sender,\n        uint256 netuid,\n        uint256 alphaAmount,\n        bytes32 delegateHotkey\n    );\n    event WithdrawAlpha(\n        address indexed sender,\n        uint256 netuid,\n        uint256 alphaAmount,\n        bytes32 userColdkey,\n        bytes32 delegateHotkey\n    );\n    event DepositTao(\n        address indexed sender,\n        uint256 taoAmount\n    );\n    event WithdrawTao(\n        address indexed sender,\n        uint256 taoAmount\n    );\n    event AdminWithdrawAlpha(\n        address indexed sender,\n        uint256 netuid,\n        uint256 alphaAmount,\n        bytes32 indexed to\n    );\n    event AdminWithdrawTao(\n        address indexed sender,\n        uint256 taoAmount,\n        bytes32 indexed to\n    );\n    event AdminMoveAlpha(\n        address indexed sender,\n        uint256 netuid,\n        uint256 alphaAmount,\n        bytes32 originHotkey,\n        bytes32 destinationHotkey\n    );\n    event BindMiner(\n        address indexed sender,\n        bytes32 hotkey,\n        uint8 minerCount\n    );\n\n    modifier onlyManager() {\n        require(MANAGER == msg.sender, \"caller is not the manager\");\n        _;\n    }\n\n    constructor() Ownable(msg.sender) {\n        staking = IStaking(ISTAKING_ADDRESS);\n        balanceTransfer = ISubtensorBalanceTransfer(ISUBTENSOR_BALANCE_TRANSFER_ADDRESS);\n    }\n\n    function setContractColdkey(bytes32 _coldkey) public onlyOwner {\n        CONTRACT_COLDKEY = _coldkey;\n    }\n\n    function setTreasuryColdkey(bytes32 _coldkey) public onlyOwner {\n        TREASURY_COLDKEY = _coldkey;\n    }\n\n    function setDelegateHotkey(bytes32 _hotkey) public onlyOwner {\n        DEFAULT_DELEGATE_HOTKEY = _hotkey;\n    }\n\n    function setManager(address _manager) public onlyOwner {\n        MANAGER = _manager;\n    }\n\n    function pause(bool _paused) public onlyOwner {\n        paused = _paused;\n    }\n\n    function verifySignature(\n        bytes32 _message,\n        bytes memory _signature,\n        address _signer\n    ) internal pure returns (bool) {\n        bytes32 ethSignedMessageHash = _message.toEthSignedMessageHash();\n        address recoveredSigner = ethSignedMessageHash.recover(_signature);\n        return recoveredSigner == _signer;\n    }\n\n    function bindMiner(bytes32 _hotkey, bytes memory _signature) public nonReentrant {\n        require(!paused, \"contract is paused\");\n        require(minerCount[_hotkey] < MAX_MINER_BOUND, \"hotkey reached max miner bound\");\n        require(!minerBound[msg.sender], \"miner already bounded\");\n\n        // Verify signature: check that _hotkey was signed by msg.sender\n        require(\n            verifySignature(_hotkey, _signature, msg.sender),\n            \"invalid signature: hotkey must be signed by msg.sender\"\n        );\n\n        minerHotkey[msg.sender] = _hotkey;\n        minerAddresses[_hotkey].push(msg.sender);\n        minerCount[_hotkey] += 1;\n        minerBound[msg.sender] = true;\n\n        emit BindMiner(msg.sender, _hotkey, minerCount[_hotkey]);\n    }\n\n    function depositAlpha(uint256 _netuid, uint256 _amount, bytes32 _delegate_hotkey) public nonReentrant {\n        require(!paused, \"contract is paused\");\n        require(minerBound[msg.sender], \"miner not bounded\");\n\n        bytes memory data = abi.encodeWithSelector(\n            IStaking.transferStake.selector,\n            CONTRACT_COLDKEY,\n            _delegate_hotkey,\n            _netuid,\n            _netuid,\n            _amount\n        );\n        (bool success, ) = address(staking).delegatecall{gas: gasleft()}(data);\n        require(success, \"user deposit alpha call failed\");\n\n        if (_delegate_hotkey != DEFAULT_DELEGATE_HOTKEY) {\n            data = abi.encodeWithSelector(\n                IStaking.moveStake.selector,\n                _delegate_hotkey,\n                DEFAULT_DELEGATE_HOTKEY,\n                _netuid,\n                _netuid,\n                _amount\n            );\n            (success, ) = address(staking).call{gas: gasleft()}(data);\n            require(success, \"user deposit, move stake call failed\");\n        }\n\n        userBalance[msg.sender][_netuid] += _amount;\n        subnetAlphaBalance[_netuid] += _amount;\n\n        emit DepositAlpha(msg.sender, _netuid, _amount, _delegate_hotkey);\n    }\n\n    function withdrawAlpha(uint256 _netuid, uint256 _amount, bytes32 _user_coldkey) public nonReentrant {\n        require(!paused, \"contract is paused\");\n        require(userBalance[msg.sender][_netuid] >= _amount, \"user withdraw, insufficient alpha balance\");\n\n        userBalance[msg.sender][_netuid] -= _amount;\n        subnetAlphaBalance[_netuid] -= _amount;\n\n        bytes memory data = abi.encodeWithSelector(\n            IStaking.transferStake.selector,\n            _user_coldkey,\n            DEFAULT_DELEGATE_HOTKEY,\n            _netuid,\n            _netuid,\n            _amount\n        );\n        (bool success, ) = address(staking).call{gas: gasleft()}(data);\n        require(success, \"user withdraw alpha call failed\");\n\n        emit WithdrawAlpha(msg.sender, _netuid, _amount, _user_coldkey, DEFAULT_DELEGATE_HOTKEY);\n    }\n\n    function depositTao() public  payable nonReentrant {\n        require(!paused, \"contract is paused\");\n        uint256 rao = msg.value / 1e9; // Convert EVM TAO to MAINNET RAO\n        require(rao > 0, \"user deposit, amount must be greater than zero\");\n\n        bytes memory data = abi.encodeWithSelector(\n            IStaking.addStake.selector,\n            DEFAULT_DELEGATE_HOTKEY,\n            rao,\n            0\n        );\n        (bool success, ) = address(staking).call{value: rao, gas: gasleft()}(data);\n        require(success, \"user deposit tao call failed\");\n\n        userBalance[msg.sender][0] += rao;\n        subnetAlphaBalance[0] += rao;\n\n        emit DepositTao(msg.sender, rao);\n    }\n\n    function withdrawTao(uint256 _amount) public payable nonReentrant {\n        require(!paused, \"contract is paused\");\n        require(userBalance[msg.sender][0] >= _amount, \"user withdraw, insufficient tao balance\");\n\n        userBalance[msg.sender][0] -= _amount;\n        subnetAlphaBalance[0] -= _amount;\n\n        bytes memory data = abi.encodeWithSelector(\n            IStaking.removeStake.selector,\n            DEFAULT_DELEGATE_HOTKEY,\n            _amount,\n            0\n        );\n        (bool success, ) = address(staking).call{gas: gasleft()}(data);\n        require(success, \"user withdraw tao call failed\");\n\n        payable(msg.sender).transfer(_amount * 1e9); // Convert RAO to EVM TAO\n\n        emit WithdrawTao(msg.sender, _amount);\n    }\n\n    function adminMoveAlpha(uint256 _netuid, uint256 _amount, bytes32 _origin_hotkey, bytes32 _destination_hotkey) public onlyManager {\n        bytes memory data = abi.encodeWithSelector(\n            IStaking.moveStake.selector,\n            _origin_hotkey,\n            _destination_hotkey,\n            _netuid,\n            _netuid,\n            _amount\n        );\n        (bool success, ) = address(staking).call{gas: gasleft()}(data);\n        require(success, \"admin move stake call failed\");\n\n        emit AdminMoveAlpha(msg.sender, _netuid, _amount, _origin_hotkey, _destination_hotkey);\n    }\n\n    function adminWithdrawAlpha(uint256 _netuid, uint256 _amount) public onlyManager {\n        uint256 totalStake = staking.getStake(DEFAULT_DELEGATE_HOTKEY, CONTRACT_COLDKEY, _netuid);\n        require(totalStake - subnetAlphaBalance[_netuid] >= _amount, \"admin withdrawal, insufficient alpha\");\n\n        bytes memory data = abi.encodeWithSelector(\n            IStaking.transferStake.selector,\n            TREASURY_COLDKEY,\n            DEFAULT_DELEGATE_HOTKEY,\n            _netuid,\n            _netuid,\n            _amount\n        );\n        (bool success, ) = address(staking).call{gas: gasleft()}(data);\n        require(success, \"admin withdraw alpha call failed\");\n\n        emit AdminWithdrawAlpha(msg.sender, _netuid, _amount, TREASURY_COLDKEY);\n    }\n\n    function adminWithdrawTao(uint256 _amount) public payable onlyManager {\n        bytes memory data = abi.encodeWithSelector(\n            ISubtensorBalanceTransfer.transfer.selector,\n            TREASURY_COLDKEY\n        );\n        (bool success, ) = address(balanceTransfer).call{value: _amount, gas: gasleft()}(data);\n        require(success, \"admin withdraw tao call failed\");\n\n        emit AdminWithdrawTao(msg.sender, _amount, TREASURY_COLDKEY);\n    }\n\n    function subnetBalance(address _user, uint256 _max_netuid) public view returns (uint256[] memory) {\n        uint256[] memory balance = new uint256[](_max_netuid + 1);\n\n        for(uint i = 0; i <= _max_netuid; i++) {\n            balance[i] = userBalance[_user][i];\n        }\n        \n        return balance;\n    }\n\n    function hotkeyBalance(bytes32 _hotkey, uint256 _max_netuid) public view returns(uint256[][] memory) {\n        address[] memory addresses = minerAddresses[_hotkey];\n        uint256[][] memory balance = new uint256[][](addresses.length);\n\n        for (uint i = 0; i < addresses.length; i++) {\n            balance[i] = subnetBalance(addresses[i], _max_netuid);\n        }\n\n        return balance;\n    }\n\n    receive() external payable {}\n    fallback() external payable {}\n}","source_code_hash":null,"compiler_version":"v0.8.24+commit.e11b9ed9","optimization_used":"false","runs":null,"abi":"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netuid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"alphaAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"originHotkey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"destinationHotkey\",\"type\":\"bytes32\"}],\"name\":\"AdminMoveAlpha\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netuid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"alphaAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"}],\"name\":\"AdminWithdrawAlpha\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taoAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"}],\"name\":\"AdminWithdrawTao\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hotkey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"minerCount\",\"type\":\"uint8\"}],\"name\":\"BindMiner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netuid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"alphaAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delegateHotkey\",\"type\":\"bytes32\"}],\"name\":\"DepositAlpha\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taoAmount\",\"type\":\"uint256\"}],\"name\":\"DepositTao\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"netuid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"alphaAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"userColdkey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"delegateHotkey\",\"type\":\"bytes32\"}],\"name\":\"WithdrawAlpha\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taoAmount\",\"type\":\"uint256\"}],\"name\":\"WithdrawTao\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"CONTRACT_COLDKEY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_DELEGATE_HOTKEY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREASURY_COLDKEY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_netuid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_origin_hotkey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_destination_hotkey\",\"type\":\"bytes32\"}],\"name\":\"adminMoveAlpha\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_netuid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"adminWithdrawAlpha\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"adminWithdrawTao\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balanceTransfer\",\"outputs\":[{\"internalType\":\"contract ISubtensorBalanceTransfer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hotkey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"bindMiner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_netuid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_delegate_hotkey\",\"type\":\"bytes32\"}],\"name\":\"depositAlpha\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositTao\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hotkey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_max_netuid\",\"type\":\"uint256\"}],\"name\":\"hotkeyBalance\",\"outputs\":[{\"internalType\":\"uint256[][]\",\"name\":\"\",\"type\":\"uint256[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"minerAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"minerBound\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"minerCount\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"minerHotkey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_coldkey\",\"type\":\"bytes32\"}],\"name\":\"setContractColdkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hotkey\",\"type\":\"bytes32\"}],\"name\":\"setDelegateHotkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_coldkey\",\"type\":\"bytes32\"}],\"name\":\"setTreasuryColdkey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staking\",\"outputs\":[{\"internalType\":\"contract IStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"subnetAlphaBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_max_netuid\",\"type\":\"uint256\"}],\"name\":\"subnetBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"userBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_netuid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_user_coldkey\",\"type\":\"bytes32\"}],\"name\":\"withdrawAlpha\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTao\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]","contract_file_name":null,"compiler_type":null,"evm_version":"paris","constructor_arguments":null,"library":null,"license_type":null,"critical_count":2,"high_count":17,"medium_count":16,"low_count":0,"informational_count":0,"audit_status":"completed","audit_completed_at":"1779291869205","erc20_balances":[]}}