Initial commit
This commit is contained in:
commit
d50b759ebe
69
.gitignore
vendored
Normal file
69
.gitignore
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
build
|
||||
.vscode
|
||||
.idea
|
||||
.env
|
||||
|
||||
generated
|
||||
.DS_Store
|
422
abis/Governance.json
Normal file
422
abis/Governance.json
Normal file
@ -0,0 +1,422 @@
|
||||
[
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "_gasCompLogic", "type": "address" },
|
||||
{ "internalType": "address", "name": "_userVault", "type": "address" }
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{ "indexed": true, "internalType": "address", "name": "account", "type": "address" },
|
||||
{ "indexed": true, "internalType": "address", "name": "to", "type": "address" }
|
||||
],
|
||||
"name": "Delegated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{ "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" },
|
||||
{ "indexed": true, "internalType": "address", "name": "proposer", "type": "address" },
|
||||
{ "indexed": false, "internalType": "address", "name": "target", "type": "address" },
|
||||
{ "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" },
|
||||
{ "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" },
|
||||
{ "indexed": false, "internalType": "string", "name": "description", "type": "string" }
|
||||
],
|
||||
"name": "ProposalCreated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [{ "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }],
|
||||
"name": "ProposalExecuted",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{ "indexed": true, "internalType": "address", "name": "account", "type": "address" },
|
||||
{ "indexed": true, "internalType": "address", "name": "from", "type": "address" }
|
||||
],
|
||||
"name": "Undelegated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{ "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" },
|
||||
{ "indexed": true, "internalType": "address", "name": "voter", "type": "address" },
|
||||
{ "indexed": true, "internalType": "bool", "name": "support", "type": "bool" },
|
||||
{ "indexed": false, "internalType": "uint256", "name": "votes", "type": "uint256" }
|
||||
],
|
||||
"name": "Voted",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "CLOSING_PERIOD",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "EXECUTION_DELAY",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "EXECUTION_EXPIRATION",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "PROPOSAL_THRESHOLD",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "QUORUM_VOTES",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "VOTE_EXTEND_TIME",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "VOTING_DELAY",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "VOTING_PERIOD",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "bytes32[]", "name": "domains", "type": "bytes32[]" }],
|
||||
"name": "bulkResolve",
|
||||
"outputs": [{ "internalType": "address[]", "name": "result", "type": "address[]" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "canWithdrawAfter",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address[]", "name": "from", "type": "address[]" },
|
||||
{ "internalType": "uint256", "name": "proposalId", "type": "uint256" },
|
||||
{ "internalType": "bool", "name": "support", "type": "bool" }
|
||||
],
|
||||
"name": "castDelegatedVote",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "uint256", "name": "proposalId", "type": "uint256" },
|
||||
{ "internalType": "bool", "name": "support", "type": "bool" }
|
||||
],
|
||||
"name": "castVote",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "proposalId", "type": "uint256" }],
|
||||
"name": "checkIfQuorumReached",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
|
||||
"name": "delegate",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "delegatedTo",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "proposalId", "type": "uint256" }],
|
||||
"name": "execute",
|
||||
"outputs": [],
|
||||
"stateMutability": "payable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "gasCompensationVault",
|
||||
"outputs": [{ "internalType": "contract IGasCompensationVault", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "uint256", "name": "proposalId", "type": "uint256" },
|
||||
{ "internalType": "address", "name": "voter", "type": "address" }
|
||||
],
|
||||
"name": "getReceipt",
|
||||
"outputs": [
|
||||
{
|
||||
"components": [
|
||||
{ "internalType": "bool", "name": "hasVoted", "type": "bool" },
|
||||
{ "internalType": "bool", "name": "support", "type": "bool" },
|
||||
{ "internalType": "uint256", "name": "votes", "type": "uint256" }
|
||||
],
|
||||
"internalType": "struct Governance.Receipt",
|
||||
"name": "",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "uint256", "name": "proposalId", "type": "uint256" },
|
||||
{ "internalType": "address", "name": "account", "type": "address" }
|
||||
],
|
||||
"name": "hasAccountVoted",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "bytes32", "name": "_torn", "type": "bytes32" }],
|
||||
"name": "initialize",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "latestProposalIds",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "uint256", "name": "amount", "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": "lock",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }],
|
||||
"name": "lockWithApproval",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "lockedBalance",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "proposalCount",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"name": "proposals",
|
||||
"outputs": [
|
||||
{ "internalType": "address", "name": "proposer", "type": "address" },
|
||||
{ "internalType": "address", "name": "target", "type": "address" },
|
||||
{ "internalType": "uint256", "name": "startTime", "type": "uint256" },
|
||||
{ "internalType": "uint256", "name": "endTime", "type": "uint256" },
|
||||
{ "internalType": "uint256", "name": "forVotes", "type": "uint256" },
|
||||
{ "internalType": "uint256", "name": "againstVotes", "type": "uint256" },
|
||||
{ "internalType": "bool", "name": "executed", "type": "bool" },
|
||||
{ "internalType": "bool", "name": "extended", "type": "bool" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "target", "type": "address" },
|
||||
{ "internalType": "string", "name": "description", "type": "string" }
|
||||
],
|
||||
"name": "propose",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "from", "type": "address" },
|
||||
{ "internalType": "address", "name": "target", "type": "address" },
|
||||
{ "internalType": "string", "name": "description", "type": "string" }
|
||||
],
|
||||
"name": "proposeByDelegate",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }],
|
||||
"name": "resolve",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "returnMultisigAddress",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "closingPeriod", "type": "uint256" }],
|
||||
"name": "setClosingPeriod",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "executionDelay", "type": "uint256" }],
|
||||
"name": "setExecutionDelay",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "executionExpiration", "type": "uint256" }],
|
||||
"name": "setExecutionExpiration",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "gasCompensationsLimit", "type": "uint256" }],
|
||||
"name": "setGasCompensations",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "proposalThreshold", "type": "uint256" }],
|
||||
"name": "setProposalThreshold",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "quorumVotes", "type": "uint256" }],
|
||||
"name": "setQuorumVotes",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "voteExtendTime", "type": "uint256" }],
|
||||
"name": "setVoteExtendTime",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "votingDelay", "type": "uint256" }],
|
||||
"name": "setVotingDelay",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "votingPeriod", "type": "uint256" }],
|
||||
"name": "setVotingPeriod",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "proposalId", "type": "uint256" }],
|
||||
"name": "state",
|
||||
"outputs": [{ "internalType": "enum Governance.ProposalState", "name": "", "type": "uint8" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "torn",
|
||||
"outputs": [{ "internalType": "contract TORN", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{ "inputs": [], "name": "undelegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" },
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }],
|
||||
"name": "unlock",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "userVault",
|
||||
"outputs": [{ "internalType": "contract ITornadoVault", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "version",
|
||||
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }],
|
||||
"name": "withdrawFromHelper",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{ "stateMutability": "payable", "type": "receive" }
|
||||
]
|
670
abis/RelayerRegistry.json
Normal file
670
abis/RelayerRegistry.json
Normal file
@ -0,0 +1,670 @@
|
||||
[
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_torn",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_governance",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_ens",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_staking",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_feeManager",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "minStakeAmount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "MinimumStakeAmount",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "RelayerBalanceNullified",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "bytes32",
|
||||
"name": "relayer",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "string",
|
||||
"name": "ensName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayerAddress",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "stakedAmount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "RelayerRegistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "tornadoRouter",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "RouterRegistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amountStakeAdded",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "StakeAddedToRelayer",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amountBurned",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "StakeBurned",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "WorkerRegistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "WorkerUnregistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32[]",
|
||||
"name": "domains",
|
||||
"type": "bytes32[]"
|
||||
}
|
||||
],
|
||||
"name": "bulkResolve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "result",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "sender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "contract ITornadoInstance",
|
||||
"name": "pool",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "burn",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "ens",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract IENS",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "feeManager",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract FeeManager",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "getRelayerBalance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "getRelayerEnsHash",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "governance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_tornadoRouter",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "initialize",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "toResolve",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isRelayer",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "toResolve",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isRelayerRegistered",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "minStakeAmount",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "nullifyBalance",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "ensName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "workersToRegister",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"name": "register",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "ensName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "workersToRegister",
|
||||
"type": "address[]"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"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": "registerPermit",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "registerWorker",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "relayers",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "balance",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "ensHash",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "resolve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "minAmount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "setMinStakeAmount",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "tornadoRouterAddress",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "setTornadoRouter",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "stakeToRelayer",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "staker",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"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": "stakeToRelayerPermit",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "staking",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract ITornadoStakingRewards",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "torn",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract TORN",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "tornadoRouter",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "unregisterWorker",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "workers",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
17
package.json
Normal file
17
package.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "tornado-governance-subgraph",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"codegen": "graph codegen",
|
||||
"build": "graph build",
|
||||
"create-local": "graph create --node http://127.0.0.1:8020 tornadocash/tornado-governance",
|
||||
"deploy": "graph deploy --node http://127.0.0.1:8020 --ipfs http://127.0.0.1:5001 tornadocash/tornado-governance"
|
||||
},
|
||||
"dependencies": {
|
||||
"@graphprotocol/graph-cli": "0.27.0",
|
||||
"@graphprotocol/graph-ts": "0.24.1"
|
||||
},
|
||||
"resolutions": {
|
||||
"concat-stream": "2.0.0"
|
||||
}
|
||||
}
|
69
schema.graphql
Normal file
69
schema.graphql
Normal file
@ -0,0 +1,69 @@
|
||||
type Proposal @entity {
|
||||
id: ID!
|
||||
timestamp: Int!
|
||||
blockNumber: Int!
|
||||
logIndex: Int!
|
||||
transactionHash: Bytes!
|
||||
|
||||
proposalId: Int!
|
||||
proposer: Bytes!
|
||||
target: Bytes!
|
||||
startTime: Int!
|
||||
endTime: Int!
|
||||
description: String!
|
||||
executed: Boolean!
|
||||
}
|
||||
|
||||
type Voted @entity {
|
||||
id: ID!
|
||||
timestamp: Int!
|
||||
blockNumber: Int!
|
||||
logIndex: Int!
|
||||
transactionHash: Bytes!
|
||||
|
||||
proposalId: Int!
|
||||
voter: Bytes!
|
||||
support: Boolean!
|
||||
votes: BigInt!
|
||||
from: Bytes!
|
||||
input: Bytes!
|
||||
}
|
||||
|
||||
type Delegated @entity {
|
||||
id: ID!
|
||||
timestamp: Int!
|
||||
blockNumber: Int!
|
||||
logIndex: Int!
|
||||
transactionHash: Bytes!
|
||||
|
||||
account: Bytes!
|
||||
delegateTo: Bytes!
|
||||
}
|
||||
|
||||
type Undelegated @entity {
|
||||
id: ID!
|
||||
timestamp: Int!
|
||||
blockNumber: Int!
|
||||
logIndex: Int!
|
||||
transactionHash: Bytes!
|
||||
|
||||
account: Bytes!
|
||||
delegateFrom: Bytes!
|
||||
}
|
||||
|
||||
type StakeBurned @entity {
|
||||
id: ID!
|
||||
timestamp: Int!
|
||||
blockNumber: Int!
|
||||
logIndex: Int!
|
||||
transactionHash: Bytes!
|
||||
|
||||
relayer: Bytes!
|
||||
amountBurned: BigInt!
|
||||
}
|
||||
|
||||
type StakeDailyBurned @entity {
|
||||
id: ID!
|
||||
date: Int!
|
||||
dailyAmountBurned: BigInt!
|
||||
}
|
134
src/mapping.ts
Normal file
134
src/mapping.ts
Normal file
@ -0,0 +1,134 @@
|
||||
import { BigInt } from "@graphprotocol/graph-ts";
|
||||
import {
|
||||
Proposal,
|
||||
Voted,
|
||||
Delegated,
|
||||
Undelegated,
|
||||
StakeBurned,
|
||||
StakeDailyBurned,
|
||||
} from "../generated/schema";
|
||||
import {
|
||||
ProposalCreated,
|
||||
ProposalExecuted,
|
||||
Voted as VotedEvent,
|
||||
Delegated as DelegatedEvent,
|
||||
Undelegated as UndelegatedEvent,
|
||||
} from "../generated/Governance/Governance";
|
||||
import {
|
||||
StakeBurned as StakeBurnedEvent
|
||||
} from "../generated/RelayerRegistry/RelayerRegistry";
|
||||
|
||||
export let ZERO_BI = BigInt.fromI32(0);
|
||||
|
||||
export function handleProposalCreated(event: ProposalCreated): void {
|
||||
let proposal = Proposal.load(event.params.id.toString());
|
||||
|
||||
if (proposal === null) {
|
||||
proposal = new Proposal(event.params.id.toString());
|
||||
proposal.timestamp = event.block.timestamp.toI32();
|
||||
proposal.blockNumber = event.block.number.toI32();
|
||||
proposal.logIndex = event.logIndex.toI32();
|
||||
proposal.transactionHash = event.transaction.hash;
|
||||
|
||||
proposal.proposalId = event.params.id.toI32();
|
||||
proposal.proposer = event.params.proposer;
|
||||
proposal.target = event.params.target;
|
||||
proposal.startTime = event.params.startTime.toI32();
|
||||
proposal.endTime = event.params.endTime.toI32();
|
||||
proposal.description = event.params.description;
|
||||
proposal.executed = false;
|
||||
proposal.save();
|
||||
}
|
||||
}
|
||||
|
||||
export function handleProposalExecuted(event: ProposalExecuted): void {
|
||||
let proposal = Proposal.load(event.params.proposalId.toString());
|
||||
|
||||
if (proposal !== null) {
|
||||
proposal.executed = true;
|
||||
proposal.save();
|
||||
}
|
||||
}
|
||||
|
||||
export function handleVoted(event: VotedEvent): void {
|
||||
let voted = Voted.load(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
|
||||
if (voted === null) {
|
||||
voted = new Voted(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
voted.timestamp = event.block.timestamp.toI32();
|
||||
voted.blockNumber = event.block.number.toI32();
|
||||
voted.logIndex = event.logIndex.toI32();
|
||||
voted.transactionHash = event.transaction.hash;
|
||||
|
||||
voted.proposalId = event.params.proposalId.toI32();
|
||||
voted.voter = event.params.voter;
|
||||
voted.support = event.params.support;
|
||||
voted.votes = event.params.votes;
|
||||
voted.from = event.transaction.from;
|
||||
voted.input = event.transaction.input;
|
||||
voted.save();
|
||||
}
|
||||
}
|
||||
|
||||
export function handleDelegated(event: DelegatedEvent): void {
|
||||
let delegated = Delegated.load(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
|
||||
if (delegated === null) {
|
||||
delegated = new Delegated(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
delegated.timestamp = event.block.timestamp.toI32();
|
||||
delegated.blockNumber = event.block.number.toI32();
|
||||
delegated.logIndex = event.logIndex.toI32();
|
||||
delegated.transactionHash = event.transaction.hash;
|
||||
|
||||
delegated.account = event.params.account;
|
||||
delegated.delegateTo = event.params.to;
|
||||
delegated.save();
|
||||
}
|
||||
}
|
||||
|
||||
export function handleUndelegated(event: UndelegatedEvent): void {
|
||||
let undelegated = Undelegated.load(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
|
||||
if (undelegated === null) {
|
||||
undelegated = new Undelegated(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
undelegated.timestamp = event.block.timestamp.toI32();
|
||||
undelegated.blockNumber = event.block.number.toI32();
|
||||
undelegated.logIndex = event.logIndex.toI32();
|
||||
undelegated.transactionHash = event.transaction.hash;
|
||||
|
||||
undelegated.account = event.params.account;
|
||||
undelegated.delegateFrom = event.params.from;
|
||||
undelegated.save();
|
||||
}
|
||||
}
|
||||
|
||||
export function handleStakeBurned(event: StakeBurnedEvent): void {
|
||||
let stakeBurned = StakeBurned.load(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
|
||||
if (stakeBurned === null) {
|
||||
stakeBurned = new StakeBurned(event.transaction.hash.toHex() + '_' + event.logIndex.toString());
|
||||
stakeBurned.timestamp = event.block.timestamp.toI32();
|
||||
stakeBurned.blockNumber = event.block.number.toI32();
|
||||
stakeBurned.logIndex = event.logIndex.toI32();
|
||||
stakeBurned.transactionHash = event.transaction.hash;
|
||||
|
||||
stakeBurned.relayer = event.params.relayer;
|
||||
stakeBurned.amountBurned = event.params.amountBurned;
|
||||
stakeBurned.save();
|
||||
|
||||
let timestamp = event.block.timestamp.toI32();
|
||||
let dayID = timestamp / 86400;
|
||||
let dayStartTimestamp = dayID * 86400;
|
||||
|
||||
let dailyBurned = StakeDailyBurned.load(dayStartTimestamp.toString());
|
||||
|
||||
if (dailyBurned === null) {
|
||||
dailyBurned = new StakeDailyBurned(dayStartTimestamp.toString());
|
||||
dailyBurned.date = dayStartTimestamp;
|
||||
dailyBurned.dailyAmountBurned = ZERO_BI;
|
||||
}
|
||||
|
||||
dailyBurned.dailyAmountBurned = dailyBurned.dailyAmountBurned.plus(event.params.amountBurned);
|
||||
dailyBurned.save();
|
||||
}
|
||||
}
|
55
subgraph.yaml
Normal file
55
subgraph.yaml
Normal file
@ -0,0 +1,55 @@
|
||||
specVersion: 0.0.2
|
||||
schema:
|
||||
file: ./schema.graphql
|
||||
dataSources:
|
||||
- kind: ethereum
|
||||
name: Governance
|
||||
network: mainnet
|
||||
source:
|
||||
address: "0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
|
||||
abi: Governance
|
||||
startBlock: 11474695
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
entities:
|
||||
- Proposal
|
||||
- Voted
|
||||
- Delegated
|
||||
- Undelegated
|
||||
abis:
|
||||
- name: Governance
|
||||
file: ./abis/Governance.json
|
||||
eventHandlers:
|
||||
- event: ProposalCreated(indexed uint256,indexed address,address,uint256,uint256,string)
|
||||
handler: handleProposalCreated
|
||||
- event: ProposalExecuted(indexed uint256)
|
||||
handler: handleProposalExecuted
|
||||
- event: Voted(indexed uint256,indexed address,indexed bool,uint256)
|
||||
handler: handleVoted
|
||||
- event: Delegated(indexed address,indexed address)
|
||||
handler: handleDelegated
|
||||
- event: Undelegated(indexed address,indexed address)
|
||||
handler: handleUndelegated
|
||||
file: ./src/mapping.ts
|
||||
- kind: ethereum
|
||||
name: RelayerRegistry
|
||||
network: mainnet
|
||||
source:
|
||||
address: "0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2"
|
||||
abi: RelayerRegistry
|
||||
startBlock: 14173129
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
entities:
|
||||
- StakeBurned
|
||||
abis:
|
||||
- name: RelayerRegistry
|
||||
file: ./abis/RelayerRegistry.json
|
||||
eventHandlers:
|
||||
- event: StakeBurned(address,uint256)
|
||||
handler: handleStakeBurned
|
||||
file: ./src/mapping.ts
|
4
tsconfig.json
Normal file
4
tsconfig.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"extends": "@graphprotocol/graph-ts/types/tsconfig.base.json",
|
||||
"include": ["src"]
|
||||
}
|
Loading…
Reference in New Issue
Block a user