Skip to main content

Registering an Audius Node Manually (Multi-Sig Wallets)

Wallet Connect Update

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
Stay Up to Date

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.

Create new Safe screen

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.

Giving each member wallet address a meaningful nickname helps trouble shoot and identify wallets in the future.

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.

This example requires 2 of the 2 signers to participate in signing transactions, meaning that all wallet members are required to sign transactions on behalf of the Safe.

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.

The Safe Wallet address is displayed here.

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.

Use the "Assets" menu on the side bar to view the token allocations in the Safe.

Function Calls

You now need to call two functions via the Safe

  1. Approve, to permit the delegation system to transfer $AUDIO tokens on behalf of the wallet.
  2. Register, to register a Node on chain.

Approve

Select the "New Transaction" button on the Safe home page, and then choose "Transaction Builder".

"New transaction" button.
"Transaction Builder" button.

On the Transaction Builder screen, complete the form as follows:

Fieldinput
Address or ENS NameThe AUDIO token address 0x18aaa7115705e8be94bffebde57af9bfc265b998
Enter ABIThe 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 AddressThe AUDIO token address 0x18aaa7115705e8be94bffebde57af9bfc265b998
Contract Method Selectorapprove
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
warning

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

The completed Transaction Builder form for the Approve transaction.

Once complete, click the "Add transaction" button to add this step to the Transaction Batch.

tip

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:

Fieldinput
Address or ENS NameThe Audius Service Registration address 0xD17A9bc90c582249e211a4f4b16721e7f65156c8
Enter ABIThe ABI it detects will be incorrect and must be copied from the code block at the bottom of this page
To AddressThe Audius Service Registration address 0xD17A9bc90c582249e211a4f4b16721e7f65156c8
Contract Method Selectorregister
_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)AddressMinimum StakeMaximum Stake
Content Node0x636f6e74656e742d6e6f64650000000000000000000000000000000000000000200,00010,000,000
Discovery Node0x646973636f766572792d6e6f6465000000000000000000000000000000000000200,0007,000,000
The completed Transaction Builder form for the Register transaction.

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

Confirm both transactions have been added to the batch and click "Create batch"

On the next screen, confirm the transactions one more time and use the "Simulate" button to simulate the transaction.

Successfully simulated transaction batch.

Click the "Send Batch" button to submit the batch to the multisig wallet signers.

Successfully submitted transaction batch.

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.

Review the details and sign the transaction.

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.

Transaction awaiting additional signers.

Last Signer

The last wallet to sign the signature will be responsible for paying Gas fees when submitting the transactions to the Ethereum blockchain.

Transaction to be signed.
Successful Transaction in history.

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.

Click the "View Leaderboard" button to expand the list of service providers.

The wallet used in this walkthrough has both a Content Node and a Discovery Node, both are visible on the Protocol Dashboard

TikiLabs Nodes on the Audius 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

Audius Token ABI
[
{
"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

Delegate Manager ABI
[
[
{
"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"
}
]
]