Registering an Audius Node Manually (Multi-Sig Wallets)
The Audius Protocol Dashboard has been updated to allow connections using Wallet Connect. Registering nodes with a multisig wallet can now follow the Registration guide.
The following guide demonstrates how to skip using the Audius Protocol Dashboard to register a service and instead talk to the smart contracts directly using their ABIs. The guide is written for Safe Multi-Sig Wallets, but can be extended to any on-chain wallet infrastructure following similar method calls.
Create a Safe
This walkthrough uses the Safe at the address 0xe4882D9A38A2A1fc652996719AF0fb15CB968d0a
in a "2
of 2" configuration using the following wallets as signers:
0x159200F84c2cF000b3A014cD4D8244500CCc36ca
0xDa4AA6851970d3f9EC151E8dF0AFc7Cc3d11071d
For the most up to date instructions on creating a Safe, follow the onboarding process on https://safe.global
To get started, navigating to https://app.safe.global and sign in with an Ethereum wallet, Metamask is used in this example.
Add Owners
When creating the Safe, add multiple trusted wallet addresses as signers and confirm the required minimum number of signers to accommodate your security needs.
Set Signing Thresholds
More signers can imply greater security, but will also require more signers to actively participate in the process of signing transactions.
Work with the other members of the Safe to determine the safety and convenience trade offs and select a minimum number of member wallets required to sign transactions.
Deposit $AUDIO Tokens
Once a Safe has been created, send the amount of $AUDIO to delegate to the Safe address.
The address can be seen, and copied, from the top left corner of the Safe homepage.
From a wallet holding $AUDIO, transfer the amount to be staked or delegated to this new Safe address. Best practice is to transfer a small amount to confirm the wallet addresses before sending large numbers of tokens.
Function Calls
You now need to call two functions via the Safe
- Approve, to permit the delegation system to transfer $AUDIO tokens on behalf of the wallet.
- Register, to register a Node on chain.
Approve
Select the "New Transaction" button on the Safe home page, and then choose "Transaction Builder".
On the Transaction Builder screen, complete the form as follows:
Field | input |
---|---|
Address or ENS Name | The AUDIO token address 0x18aaa7115705e8be94bffebde57af9bfc265b998 |
Enter ABI | The ABI it detects will be incorrect and must be copied from the code block at the bottom of this page, or directly from source on GitHub |
To Address | The AUDIO token address 0x18aaa7115705e8be94bffebde57af9bfc265b998 |
Contract Method Selector | approve |
spender (address) | The staking proxy address 0xe6D97B2099F142513be7A2a068bE040656Ae4591 |
value (uint256) | The amount to be staked in Wei. Use the etherscan unit converter tool to convert from Audius Tokens to the amount in Wei |
Double check the Enter ABI
field, the ABI it detects will be incorrect and must be copied from the
code block at the bottom of this page, or directly from source on
GitHub
Once complete, click the "Add transaction" button to add this step to the Transaction Batch.
The Transaction Builder allows users to string together a "batch" of transactions that can all be approved at once. This saves the headache of each multisig wallet needing to sign multiple transactions to perform a single action.
Register
Next, add the Register
transaction to the batch.
To start, clear the "New Transaction" form fields and enter the following:
Field | input |
---|---|
Address or ENS Name | The Audius Service Registration address 0xD17A9bc90c582249e211a4f4b16721e7f65156c8 |
Enter ABI | The ABI it detects will be incorrect and must be copied from the code block at the bottom of this page |
To Address | The Audius Service Registration address 0xD17A9bc90c582249e211a4f4b16721e7f65156c8 |
Contract Method Selector | register |
_serviceType (bytes32) | This depends on the Node type (Content or Discovery), see table below for value for each Node type |
_endpoint (string) | The endpoint for the Node, this example uses the TikiLabs Discovery Node |
_stakeAmount (uint256) | The amount to be staked, see table below for min and max stake by Node type. |
_delegateOwnerWallet (address) | The Delegate Owner wallet used when setting the Node, this can be viewed at the /health_check endpoint of the node, https://audius-dn1.tikilabs.com/health_check |
_serviceType (bytes32) | Address | Minimum Stake | Maximum Stake |
---|---|---|---|
Content Node | 0x636f6e74656e742d6e6f64650000000000000000000000000000000000000000 | 200,000 | 10,000,000 |
Discovery Node | 0x646973636f766572792d6e6f6465000000000000000000000000000000000000 | 200,000 | 7,000,000 |
Once complete, click the "Add transaction" button to add this step to the Transaction Batch.
Submit Transaction Batch
Once both the Approve
and Register
transactions have been created, click the "Create batch"
button
On the next screen, confirm the transactions one more time and use the "Simulate" button to simulate the transaction.
Click the "Send Batch" button to submit the batch to the multisig wallet signers.
Sign the Transaction
Now that the Transaction has been built, it must be signed by the minimum threshold of members of the multisig.
First Signer
The first signer will be the user creating the transaction batch and must first sign the transaction for it to be submitted to the other members of the Safe.
To view the state of the transaction, use the "Transactions" menu from the side bar. The details of the transaction and status of other signers is shown.
Last Signer
The last wallet to sign the signature will be responsible for paying Gas fees when submitting the transactions to the Ethereum blockchain.
Protocol Dashboard
Once registration is complete, verify that the Node on the Audius Protocol Dashboard.
Under the "Services" heading, look for the Safe wallet address and select it to view more details.
The wallet used in this walkthrough has both a Content Node and a Discovery Node, both are visible on the Protocol Dashboard
ABI Resources
When creating transactions in the Transaction Builder, the autocompleted ABI will be incorrect, use the following when prompted in the steps above. The versions found on GitHub, Etherscan, and included here directly are the same, multiple sources are provided for verification and convenience.
Audius Token ABI
Show JSON
[
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "owner", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "spender", "type": "address" },
{ "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "account", "type": "address" }
],
"name": "MinterAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "account", "type": "address" }
],
"name": "MinterRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "address", "name": "account", "type": "address" }
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "account", "type": "address" }
],
"name": "PauserAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "account", "type": "address" }
],
"name": "PauserRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "from", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "to", "type": "address" },
{ "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": false, "internalType": "address", "name": "account", "type": "address" }
],
"name": "Unpaused",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PERMIT_TYPEHASH",
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
"name": "addMinter",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
"name": "addPauser",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{ "internalType": "address", "name": "owner", "type": "address" },
{ "internalType": "address", "name": "spender", "type": "address" }
],
"name": "allowance",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "spender", "type": "address" },
{ "internalType": "uint256", "name": "value", "type": "uint256" }
],
"name": "approve",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
"name": "balanceOf",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "account", "type": "address" },
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
],
"name": "burnFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "spender", "type": "address" },
{ "internalType": "uint256", "name": "subtractedValue", "type": "uint256" }
],
"name": "decreaseAllowance",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "spender", "type": "address" },
{ "internalType": "uint256", "name": "addedValue", "type": "uint256" }
],
"name": "increaseAllowance",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "string", "name": "name", "type": "string" },
{ "internalType": "string", "name": "symbol", "type": "string" },
{ "internalType": "uint8", "name": "decimals", "type": "uint8" }
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "_owner", "type": "address" },
{ "internalType": "address", "name": "governance", "type": "address" }
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "sender", "type": "address" }],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
"name": "isMinter",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
"name": "isPauser",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "account", "type": "address" },
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
],
"name": "mint",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
"name": "nonces",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "pause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "paused",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "owner", "type": "address" },
{ "internalType": "address", "name": "spender", "type": "address" },
{ "internalType": "uint256", "name": "value", "type": "uint256" },
{ "internalType": "uint256", "name": "deadline", "type": "uint256" },
{ "internalType": "uint8", "name": "v", "type": "uint8" },
{ "internalType": "bytes32", "name": "r", "type": "bytes32" },
{ "internalType": "bytes32", "name": "s", "type": "bytes32" }
],
"name": "permit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceMinter",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renouncePauser",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "to", "type": "address" },
{ "internalType": "uint256", "name": "value", "type": "uint256" }
],
"name": "transfer",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "from", "type": "address" },
{ "internalType": "address", "name": "to", "type": "address" },
{ "internalType": "uint256", "name": "value", "type": "uint256" }
],
"name": "transferFrom",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "unpause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]
Service Registration ABI
Show JSON
[
[
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_newClaimsManagerAddress",
"type": "address"
}
],
"name": "ClaimsManagerAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "_lockupDuration", "type": "uint256" }
],
"name": "DecreaseStakeLockupDurationUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{
"indexed": true,
"internalType": "uint256",
"name": "_decreaseAmount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_lockupExpiryBlock",
"type": "uint256"
}
],
"name": "DecreaseStakeRequestCancelled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{
"indexed": true,
"internalType": "uint256",
"name": "_decreaseAmount",
"type": "uint256"
},
{ "indexed": true, "internalType": "uint256", "name": "_newStakeAmount", "type": "uint256" }
],
"name": "DecreaseStakeRequestEvaluated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{
"indexed": true,
"internalType": "uint256",
"name": "_decreaseAmount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_lockupExpiryBlock",
"type": "uint256"
}
],
"name": "DecreaseStakeRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_newDelegateManagerAddress",
"type": "address"
}
],
"name": "DelegateManagerAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": true, "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "indexed": true, "internalType": "uint256", "name": "_spID", "type": "uint256" },
{ "indexed": false, "internalType": "address", "name": "_updatedWallet", "type": "address" }
],
"name": "DelegateOwnerWalletUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": true, "internalType": "uint256", "name": "_requestedCut", "type": "uint256" },
{ "indexed": true, "internalType": "uint256", "name": "_finalCut", "type": "uint256" }
],
"name": "DeployerCutUpdateRequestCancelled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": true, "internalType": "uint256", "name": "_updatedCut", "type": "uint256" }
],
"name": "DeployerCutUpdateRequestEvaluated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": true, "internalType": "uint256", "name": "_updatedCut", "type": "uint256" },
{
"indexed": true,
"internalType": "uint256",
"name": "_lockupExpiryBlock",
"type": "uint256"
}
],
"name": "DeployerCutUpdateRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "_spID", "type": "uint256" },
{ "indexed": true, "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": false, "internalType": "string", "name": "_endpoint", "type": "string" },
{ "indexed": false, "internalType": "uint256", "name": "_unstakeAmount", "type": "uint256" }
],
"name": "DeregisteredServiceProvider",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": false, "internalType": "string", "name": "_oldEndpoint", "type": "string" },
{ "indexed": false, "internalType": "string", "name": "_newEndpoint", "type": "string" },
{ "indexed": true, "internalType": "uint256", "name": "_spID", "type": "uint256" }
],
"name": "EndpointUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_newGovernanceAddress",
"type": "address"
}
],
"name": "GovernanceAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{
"indexed": true,
"internalType": "uint256",
"name": "_increaseAmount",
"type": "uint256"
},
{ "indexed": true, "internalType": "uint256", "name": "_newStakeAmount", "type": "uint256" }
],
"name": "IncreasedStake",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "_spID", "type": "uint256" },
{ "indexed": true, "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "indexed": true, "internalType": "address", "name": "_owner", "type": "address" },
{ "indexed": false, "internalType": "string", "name": "_endpoint", "type": "string" },
{ "indexed": false, "internalType": "uint256", "name": "_stakeAmount", "type": "uint256" }
],
"name": "RegisteredServiceProvider",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_newServiceTypeManagerAddress",
"type": "address"
}
],
"name": "ServiceTypeManagerAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_newStakingAddress",
"type": "address"
}
],
"name": "StakingAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "_lockupDuration", "type": "uint256" }
],
"name": "UpdateDeployerCutLockupDurationUpdated",
"type": "event"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_account", "type": "address" }],
"name": "cancelDecreaseStakeRequest",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_serviceProvider", "type": "address" }],
"name": "cancelUpdateDeployerCut",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "decreaseStake",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "internalType": "string", "name": "_endpoint", "type": "string" }
],
"name": "deregister",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getClaimsManagerAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getDecreaseStakeLockupDuration",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getDelegateManagerAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getDeployerCutLockupDuration",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getGovernanceAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "_serviceProvider", "type": "address" }],
"name": "getPendingDecreaseStakeRequest",
"outputs": [
{ "internalType": "uint256", "name": "amount", "type": "uint256" },
{ "internalType": "uint256", "name": "lockupExpiryBlock", "type": "uint256" }
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "_serviceProvider", "type": "address" }],
"name": "getPendingUpdateDeployerCutRequest",
"outputs": [
{ "internalType": "uint256", "name": "newDeployerCut", "type": "uint256" },
{ "internalType": "uint256", "name": "lockupExpiryBlock", "type": "uint256" }
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "internalType": "uint256", "name": "_serviceId", "type": "uint256" }
],
"name": "getServiceEndpointInfo",
"outputs": [
{ "internalType": "address", "name": "owner", "type": "address" },
{ "internalType": "string", "name": "endpoint", "type": "string" },
{ "internalType": "uint256", "name": "blockNumber", "type": "uint256" },
{ "internalType": "address", "name": "delegateOwnerWallet", "type": "address" }
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getServiceProviderDeployerCutBase",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "_serviceProvider", "type": "address" }],
"name": "getServiceProviderDetails",
"outputs": [
{ "internalType": "uint256", "name": "deployerStake", "type": "uint256" },
{ "internalType": "uint256", "name": "deployerCut", "type": "uint256" },
{ "internalType": "bool", "name": "validBounds", "type": "bool" },
{ "internalType": "uint256", "name": "numberOfEndpoints", "type": "uint256" },
{ "internalType": "uint256", "name": "minAccountStake", "type": "uint256" },
{ "internalType": "uint256", "name": "maxAccountStake", "type": "uint256" }
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "string", "name": "_endpoint", "type": "string" }],
"name": "getServiceProviderIdFromEndpoint",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{ "internalType": "address", "name": "_ownerAddress", "type": "address" },
{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" }
],
"name": "getServiceProviderIdsFromAddress",
"outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getServiceTypeManagerAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getStakingAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" }],
"name": "getTotalServiceTypeProviders",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "uint256", "name": "_increaseStakeAmount", "type": "uint256" }],
"name": "increaseStake",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "_governanceAddress", "type": "address" },
{ "internalType": "address", "name": "_claimsManagerAddress", "type": "address" },
{ "internalType": "uint256", "name": "_decreaseStakeLockupDuration", "type": "uint256" },
{ "internalType": "uint256", "name": "_deployerCutLockupDuration", "type": "uint256" }
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "internalType": "string", "name": "_endpoint", "type": "string" },
{ "internalType": "uint256", "name": "_stakeAmount", "type": "uint256" },
{ "internalType": "address", "name": "_delegateOwnerWallet", "type": "address" }
],
"name": "register",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "uint256", "name": "_decreaseStakeAmount", "type": "uint256" }],
"name": "requestDecreaseStake",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "_serviceProvider", "type": "address" },
{ "internalType": "uint256", "name": "_cut", "type": "uint256" }
],
"name": "requestUpdateDeployerCut",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_address", "type": "address" }],
"name": "setClaimsManagerAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_address", "type": "address" }],
"name": "setDelegateManagerAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_governanceAddress", "type": "address" }],
"name": "setGovernanceAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_address", "type": "address" }],
"name": "setServiceTypeManagerAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_address", "type": "address" }],
"name": "setStakingAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "uint256", "name": "_duration", "type": "uint256" }],
"name": "updateDecreaseStakeLockupDuration",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "internalType": "string", "name": "_endpoint", "type": "string" },
{ "internalType": "address", "name": "_updatedDelegateOwnerWallet", "type": "address" }
],
"name": "updateDelegateOwnerWallet",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "address", "name": "_serviceProvider", "type": "address" }],
"name": "updateDeployerCut",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [{ "internalType": "uint256", "name": "_duration", "type": "uint256" }],
"name": "updateDeployerCutLockupDuration",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "bytes32", "name": "_serviceType", "type": "bytes32" },
{ "internalType": "string", "name": "_oldEndpoint", "type": "string" },
{ "internalType": "string", "name": "_newEndpoint", "type": "string" }
],
"name": "updateEndpoint",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{ "internalType": "address", "name": "_serviceProvider", "type": "address" },
{ "internalType": "uint256", "name": "_amount", "type": "uint256" }
],
"name": "updateServiceProviderStake",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [{ "internalType": "address", "name": "_serviceProvider", "type": "address" }],
"name": "validateAccountStakeBalance",
"outputs": [],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
]