From 513c8acc6499a69dc8487f4107fe97b068798bad Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 18:03:28 +0200 Subject: [PATCH 01/12] Tapir testnet contract set (see #140). --- contracts/contracts/testnet/TapirSet.Sol | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 contracts/contracts/testnet/TapirSet.Sol diff --git a/contracts/contracts/testnet/TapirSet.Sol b/contracts/contracts/testnet/TapirSet.Sol new file mode 100644 index 00000000..28375571 --- /dev/null +++ b/contracts/contracts/testnet/TapirSet.Sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +import "../coordination/TACoChildApplication.sol"; + + +contract TapirTACoChildApplication is TACoChildApplication, Ownable { + constructor(ITACoChildToRoot _rootApplication) TACoChildApplication(_rootApplication) {} + + function setCoordinator(address _coordinator) external onlyOwner { + require(_coordinator != address(0), "Coordinator must be specified"); + require( + address(Coordinator(_coordinator).application()) == address(this), + "Invalid coordinator" + ); + coordinator = _coordinator; + } +} + +contract TapirRitualToken is ERC20("TapirRitualToken", "TRT") { + constructor(uint256 _totalSupplyOfTokens) { + _mint(msg.sender, _totalSupplyOfTokens); + } +} + +contract TapirStakingToken is ERC20("TapirStakingToken", "TST") { + constructor(uint256 _totalSupplyOfTokens) { + _mint(msg.sender, _totalSupplyOfTokens); + } +} From 0a147fd6383c50a8a8bf36ad96baee70e2f4e981 Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 18:04:02 +0200 Subject: [PATCH 02/12] Tapir deployment parameters --- deployment/constructor_params/tapir/child.yml | 29 +++++++++++++++++++ deployment/constructor_params/tapir/root.yml | 27 +++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 deployment/constructor_params/tapir/child.yml create mode 100644 deployment/constructor_params/tapir/root.yml diff --git a/deployment/constructor_params/tapir/child.yml b/deployment/constructor_params/tapir/child.yml new file mode 100644 index 00000000..057e4466 --- /dev/null +++ b/deployment/constructor_params/tapir/child.yml @@ -0,0 +1,29 @@ +deployment: + name: tapir-child + chain_id: 80001 + +artifacts: + dir: ./deployment/artifacts/ + filename: tapir.json + +contracts: + - MockPolygonChild + - ProxyAdmin + - TapirTACoChildApplication: + _rootApplication: $MockPolygonChild + - TransparentUpgradeableProxy: + _logic: $TapirTACoChildApplication + admin_: $ProxyAdmin + _data: $bytes:0x + - TapirRitualToken: + _totalSupplyOfTokens: 10000000000000000000000000 + - Coordinator: + _application: $TransparentUpgradeableProxy:TapirTACoChildApplication + _timeout: 3600 + _maxDkgSize: 32 + _admin: $deployer + _currency: $TapirRitualToken + _feeRatePerSecond: 1 + - GlobalAllowList: + _coordinator: $Coordinator + _admin: $deployer diff --git a/deployment/constructor_params/tapir/root.yml b/deployment/constructor_params/tapir/root.yml new file mode 100644 index 00000000..7fc88a0b --- /dev/null +++ b/deployment/constructor_params/tapir/root.yml @@ -0,0 +1,27 @@ +deployment: + name: tapir-root + chain_id: 11155111 # sepolia + +artifacts: + dir: ./deployment/artifacts/ + filename: tapir.json + +contracts: + - TapirStakingToken: + _totalSupplyOfTokens: 10000000000000000000000000 + - TestnetThresholdStaking + - ProxyAdmin + - TACoApplication: + _token: $TapirStakingToken + _tStaking: $TestnetThresholdStaking + _minimumAuthorization: 40000000000000000000000 + _minOperatorSeconds: 3600 + _rewardDuration: 604800 + _deauthorizationDuration: 5184000 + _commitmentDurationOptions: [15724800, 31449600] + - TransparentUpgradeableProxy: + _logic: $TACoApplication + admin_: $ProxyAdmin + _data: $bytes:0x + - MockPolygonRoot: + _rootApplication: $TransparentUpgradeableProxy:TACoApplication From 2808a3c398ecbce6edcd710c57a8de77fcc7c37e Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 18:04:18 +0200 Subject: [PATCH 03/12] Tapir deployment scripts --- scripts/tapir/deploy_child.py | 66 +++++++++++++++++++++++++++++++++++ scripts/tapir/deploy_root.py | 62 ++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 scripts/tapir/deploy_child.py create mode 100644 scripts/tapir/deploy_root.py diff --git a/scripts/tapir/deploy_child.py b/scripts/tapir/deploy_child.py new file mode 100644 index 00000000..e26ac009 --- /dev/null +++ b/scripts/tapir/deploy_child.py @@ -0,0 +1,66 @@ +#!/usr/bin/python3 + +from ape import project + +from deployment.constants import ( + CONSTRUCTOR_PARAMS_DIR, + CURRENT_NETWORK, + LOCAL_BLOCKCHAIN_ENVIRONMENTS, + OZ_DEPENDENCY, +) +from deployment.params import Deployer + +VERIFY = CURRENT_NETWORK not in LOCAL_BLOCKCHAIN_ENVIRONMENTS +CONSTRUCTOR_PARAMS_FILEPATH = CONSTRUCTOR_PARAMS_DIR / "tapir" / "child.yml" + + +def main(): + """ + This script deploys the Mock Tapir TACo Root Application, + Proxied Tapir TACo Child Application, Tapir Ritual Token, and Tapir Coordinator. + + October 6th, 2023, Deployment: + ape-run deploy_child --network polygon:mumbai:infura + ape-etherscan 0.6.10 + ape-infura 0.6.4 + ape-polygon 0.6.6 + ape-solidity 0.6.9 + eth-ape 0.6.20 + + """ + + deployer = Deployer.from_yaml( + filepath=CONSTRUCTOR_PARAMS_FILEPATH, + verify=VERIFY + ) + + mock_polygon_child = deployer.deploy(project.MockPolygonChild) + + proxy_admin = deployer.deploy(OZ_DEPENDENCY.ProxyAdmin) + + taco_implementation = deployer.deploy(project.TapirTACoChildApplication) + + proxy = deployer.deploy(OZ_DEPENDENCY.TransparentUpgradeableProxy) + taco_child_application = deployer.proxy(project.TACoChildApplication, proxy) + + deployer.transact(mock_polygon_child.setChildApplication, taco_child_application.address) + + ritual_token = deployer.deploy(project.TapirRitualToken) + + coordinator = deployer.deploy(project.Coordinator) + + deployer.transact(taco_child_application.initialize, coordinator.address) + + global_allow_list = deployer.deploy(project.GlobalAllowList) + + deployments = [ + mock_polygon_child, + proxy_admin, + taco_implementation, # implementation (contract name is different than proxy contract) + taco_child_application, # proxy + ritual_token, + coordinator, + global_allow_list, + ] + + deployer.finalize(deployments=deployments) diff --git a/scripts/tapir/deploy_root.py b/scripts/tapir/deploy_root.py new file mode 100644 index 00000000..5698d067 --- /dev/null +++ b/scripts/tapir/deploy_root.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +from ape import project + +from deployment.constants import ( + CONSTRUCTOR_PARAMS_DIR, + CURRENT_NETWORK, + LOCAL_BLOCKCHAIN_ENVIRONMENTS, + OZ_DEPENDENCY, +) +from deployment.params import Deployer + +VERIFY = CURRENT_NETWORK not in LOCAL_BLOCKCHAIN_ENVIRONMENTS +CONSTRUCTOR_PARAMS_FILEPATH = CONSTRUCTOR_PARAMS_DIR / "tapir" / "root.yml" + + +def main(): + """ + This script deploys only the Proxied Tapir TACo Root Application. + + October 6th, 2023, Deployment: + ape-run deploy_root --network etherscan:sepolia:infura + ape-etherscan 0.6.10 + ape-infura 0.6.4 + ape-polygon 0.6.6 + ape-solidity 0.6.9 + eth-ape 0.6.20 + """ + + deployer = Deployer.from_yaml( + filepath=CONSTRUCTOR_PARAMS_FILEPATH, + verify=VERIFY + ) + + reward_token = deployer.deploy(project.TapirStakingToken) + + mock_threshold_staking = deployer.deploy(project.TestnetThresholdStaking) + + proxy_admin = deployer.deploy(OZ_DEPENDENCY.ProxyAdmin) + + _ = deployer.deploy(project.TACoApplication) + + proxy = deployer.deploy(OZ_DEPENDENCY.TransparentUpgradeableProxy) + taco_application = deployer.proxy(project.TACoApplication, proxy) + + deployer.transact(mock_threshold_staking.setApplication, taco_application.address) + + deployer.transact(taco_application.initialize) + + mock_polygon_root = deployer.deploy(project.MockPolygonRoot) + deployer.transact(taco_application.setChildApplication, mock_polygon_root.address) + + deployments = [ + reward_token, + mock_threshold_staking, + proxy_admin, + # proxy only (implementation has same contract name so not included) + taco_application, + mock_polygon_root, + ] + + deployer.finalize(deployments=deployments) From fda63b895e5094584652e991113156d342ec3c34 Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 18:34:01 +0200 Subject: [PATCH 04/12] fix typo --- contracts/contracts/testnet/{TapirSet.Sol => TapirSet.sol} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename contracts/contracts/testnet/{TapirSet.Sol => TapirSet.sol} (100%) diff --git a/contracts/contracts/testnet/TapirSet.Sol b/contracts/contracts/testnet/TapirSet.sol similarity index 100% rename from contracts/contracts/testnet/TapirSet.Sol rename to contracts/contracts/testnet/TapirSet.sol From ce7bd0fcdfb3861f6e6c618f992ea33c2549a86c Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 19:10:36 +0200 Subject: [PATCH 05/12] Tapir root network artifacts --- deployment/artifacts/tapir.json | 2137 +++++++++++++++++++++++++++++++ 1 file changed, 2137 insertions(+) create mode 100644 deployment/artifacts/tapir.json diff --git a/deployment/artifacts/tapir.json b/deployment/artifacts/tapir.json new file mode 100644 index 00000000..867d6a0b --- /dev/null +++ b/deployment/artifacts/tapir.json @@ -0,0 +1,2137 @@ +{ + "11155111": { + "TapirStakingToken": { + "address": "0x0E11307Fa3Af594B2BD57ac17b3cF8Ad5948bb21", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_totalSupplyOfTokens", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "allowance", + "stateMutability": "view", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "approve", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "balanceOf", + "stateMutability": "view", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "decimals", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ] + }, + { + "type": "function", + "name": "decreaseAllowance", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "subtractedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "increaseAllowance", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "addedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "name", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ] + }, + { + "type": "function", + "name": "symbol", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ] + }, + { + "type": "function", + "name": "totalSupply", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "transfer", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "transferFrom", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "tx_hash": "0xd6ab41d8c05be4bd8a69971e65ce9cce9853a48027512048a9461c7df93abebe", + "block_number": 4437813, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TestnetThresholdStaking": { + "address": "0x2fdA86A5d0BE242fB46e04Ed5870747474aBa5c6", + "abi": [ + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "application", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IApplication" + } + ] + }, + { + "type": "function", + "name": "authorizationIncreased", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "authorizedStake", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "rolesOf", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "authorizer", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "setApplication", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_application", + "type": "address", + "internalType": "contract IApplication" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setRoles", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setRoles", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "_authorizer", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setStakes", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_tStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_keepInTStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_nuInTStake", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "stakedNu", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "stakes", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "tStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "keepInTStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "nuInTStake", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "stakingProviderInfo", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "authorizer", + "type": "address", + "internalType": "address" + }, + { + "name": "tStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "keepInTStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "nuInTStake", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xe508e486505f036fb14a9b0911f427d6afc5236c4538b177e081afdd010ec781", + "block_number": 4437818, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "ProxyAdmin": { + "address": "0xC467865066dD10eC6A68516D756F995f709D0e02", + "abi": [ + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "changeProxyAdmin", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + }, + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "getProxyAdmin", + "stateMutability": "view", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "getProxyImplementation", + "stateMutability": "view", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "upgrade", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + }, + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "upgradeAndCall", + "stateMutability": "payable", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + }, + { + "name": "implementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xda15c180ec23743c3c01170f7dd320a264b1664cd978b758258eba1323b6fb9a", + "block_number": 4437823, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TACoApplication": { + "address": "0x1fAd9BAd15DE33094725f7BBF1e0ef9EcB57Bfc6", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_tStaking", + "type": "address", + "internalType": "contract IStaking" + }, + { + "name": "_minimumAuthorization", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_minOperatorSeconds", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_rewardDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_deauthorizationDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_commitmentDurationOptions", + "type": "uint64[]", + "internalType": "uint64[]" + } + ] + }, + { + "type": "event", + "name": "AuthorizationDecreaseApproved", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AuthorizationDecreaseRequested", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AuthorizationIncreased", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AuthorizationInvoluntaryDecreased", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AuthorizationReSynchronized", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CommitmentMade", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "endCommitment", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "internalType": "uint8", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorBonded", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "previousOperator", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "startTimestamp", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorConfirmed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardAdded", + "inputs": [ + { + "name": "reward", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardDistributorSet", + "inputs": [ + { + "name": "distributor", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardPaid", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "reward", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardsWithdrawn", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Slashed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "penalty", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "investigator", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "reward", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "adjudicator", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "authorizationDecreaseRequested", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "authorizationIncreased", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "authorizedOverall", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "authorizedStake", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "availableRewards", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "bondOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "childApplication", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoRootToChild" + } + ] + }, + { + "type": "function", + "name": "commitmentDurationOption1", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ] + }, + { + "type": "function", + "name": "commitmentDurationOption2", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ] + }, + { + "type": "function", + "name": "commitmentDurationOption3", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ] + }, + { + "type": "function", + "name": "commitmentDurationOption4", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ] + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "deauthorizationDuration", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "finishAuthorizationDecrease", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "getActiveStakingProviders", + "stateMutability": "view", + "inputs": [ + { + "name": "_startIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_maxStakingProviders", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "allAuthorizedTokens", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "activeStakingProviders", + "type": "uint256[2][]", + "internalType": "uint256[2][]" + } + ] + }, + { + "type": "function", + "name": "getBeneficiary", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + } + ] + }, + { + "type": "function", + "name": "getOperatorFromStakingProvider", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "getStakingProvidersLength", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "involuntaryAuthorizationDecrease", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "isAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isOperatorConfirmed", + "stateMutability": "view", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "lastTimeRewardApplicable", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "lastUpdateTime", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "makeCommitment", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_commitmentDuration", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "minOperatorSeconds", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "minimumAuthorization", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "periodFinish", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "pushReward", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_reward", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "resynchronizeAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "rewardDistributor", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "rewardDuration", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "rewardPerToken", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "rewardPerTokenStored", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "rewardRateDecimals", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "setAdjudicator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_adjudicator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setChildApplication", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_childApplication", + "type": "address", + "internalType": "contract ITACoRootToChild" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setRewardDistributor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_rewardDistributor", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "slash", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_penalty", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_investigator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "stakingProviderFromOperator", + "stateMutability": "view", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "stakingProviderInfo", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorConfirmed", + "type": "bool", + "internalType": "bool" + }, + { + "name": "operatorStartTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "authorized", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "deauthorizing", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "endDeauthorization", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "tReward", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "rewardPerTokenPaid", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "endCommitment", + "type": "uint64", + "internalType": "uint64" + } + ] + }, + { + "type": "function", + "name": "stakingProviders", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "tStaking", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStaking" + } + ] + }, + { + "type": "function", + "name": "token", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IERC20" + } + ] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "withdrawRewards", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xd8c8ac8af19ebc0268f71fab4ed1eb16fceb488d075e01c4991d313bb92fa4ae", + "block_number": 4437844, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "MockPolygonRoot": { + "address": "0x4FD23FAB4A09F85872bf240ABBd484cb4F9a5F79", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_rootApplication", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ] + }, + { + "type": "event", + "name": "AuthorizationUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorConfirmed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "rootApplication", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ] + }, + { + "type": "function", + "name": "setRootApplication", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "application", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0x049592eeba9445d33e764e73c40f8717429809c81dea080a784e62f558e664b4", + "block_number": 4437863, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + } + } +} \ No newline at end of file From e9bb946af977c7dfe06383b9107728c1111e177e Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 19:11:28 +0200 Subject: [PATCH 06/12] hardcode verify to false to avoid etherscan verification after each individual deployment (crashes) --- scripts/tapir/deploy_child.py | 2 +- scripts/tapir/deploy_root.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/tapir/deploy_child.py b/scripts/tapir/deploy_child.py index e26ac009..059c1c62 100644 --- a/scripts/tapir/deploy_child.py +++ b/scripts/tapir/deploy_child.py @@ -10,7 +10,7 @@ ) from deployment.params import Deployer -VERIFY = CURRENT_NETWORK not in LOCAL_BLOCKCHAIN_ENVIRONMENTS +VERIFY = False CONSTRUCTOR_PARAMS_FILEPATH = CONSTRUCTOR_PARAMS_DIR / "tapir" / "child.yml" diff --git a/scripts/tapir/deploy_root.py b/scripts/tapir/deploy_root.py index 5698d067..070aa4f1 100644 --- a/scripts/tapir/deploy_root.py +++ b/scripts/tapir/deploy_root.py @@ -10,7 +10,7 @@ ) from deployment.params import Deployer -VERIFY = CURRENT_NETWORK not in LOCAL_BLOCKCHAIN_ENVIRONMENTS +VERIFY = False CONSTRUCTOR_PARAMS_FILEPATH = CONSTRUCTOR_PARAMS_DIR / "tapir" / "root.yml" From 41dca8befe0c8b081ebbc0e911b7b677d2d72a03 Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 19:21:57 +0200 Subject: [PATCH 07/12] Tapir child network artifacts --- deployment/artifacts/tapir.json | 3150 +++++++++++++++++++++++++++++++ 1 file changed, 3150 insertions(+) diff --git a/deployment/artifacts/tapir.json b/deployment/artifacts/tapir.json index 867d6a0b..7c33cb28 100644 --- a/deployment/artifacts/tapir.json +++ b/deployment/artifacts/tapir.json @@ -2133,5 +2133,3155 @@ "block_number": 4437863, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" } + }, + "80001": { + "MockPolygonChild": { + "address": "0x2F3c6A2d15A5C0C7BC3B72ce2a13DB364dAcc339", + "abi": [ + { + "type": "event", + "name": "AuthorizationUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorConfirmed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "childApplication", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoRootToChild" + } + ] + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setChildApplication", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_childApplication", + "type": "address", + "internalType": "contract ITACoRootToChild" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0x31c5950549db2e4aa35efd146ed916b343506a8e079f289a208f44cdda2cab26", + "block_number": 40907344, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "ProxyAdmin": { + "address": "0xC3085b0feB8C348D0BD7fabF4299c93dc2aE11d7", + "abi": [ + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "changeProxyAdmin", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + }, + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "getProxyAdmin", + "stateMutability": "view", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "getProxyImplementation", + "stateMutability": "view", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "upgrade", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + }, + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "upgradeAndCall", + "stateMutability": "payable", + "inputs": [ + { + "name": "proxy", + "type": "address", + "internalType": "contract ITransparentUpgradeableProxy" + }, + { + "name": "implementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xaff7174e78926b13c5fefdeea62829ab7ea925309b4662a25e015474c49301e9", + "block_number": 40907351, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TapirTACoChildApplication": { + "address": "0x3B5173baA05D574ac8CC2A9B61D29bA99fc8D0Bf", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_rootApplication", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ] + }, + { + "type": "event", + "name": "AuthorizationUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "internalType": "uint8", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorConfirmed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "authorizedStake", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "coordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "rootApplication", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ] + }, + { + "type": "function", + "name": "setCoordinator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "stakingProviderFromOperator", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "stakingProviderInfo", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorConfirmed", + "type": "bool", + "internalType": "bool" + }, + { + "name": "authorized", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0x54b938a569ded5131c2002e74bfc96ea4b14aa4791cc30999eeeb7815bc173d9", + "block_number": 40907361, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TACoChildApplication": { + "address": "0x18B04d0eB283086C2DaF41F715acDf3f974290Ad", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_rootApplication", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ] + }, + { + "type": "event", + "name": "AuthorizationUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "internalType": "uint8", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorConfirmed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "authorizedStake", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "coordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "rootApplication", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoChildToRoot" + } + ] + }, + { + "type": "function", + "name": "stakingProviderFromOperator", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "stakingProviderInfo", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorConfirmed", + "type": "bool", + "internalType": "bool" + }, + { + "name": "authorized", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "updateAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xf60f203308d5f4ad74fcbd94652ba2b6b8f82dc5856b32936d4d617c8269280e", + "block_number": 40907376, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TapirRitualToken": { + "address": "0x19555c192E8a9754744ba18AD3432F7ea2d3E493", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_totalSupplyOfTokens", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "allowance", + "stateMutability": "view", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "approve", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "balanceOf", + "stateMutability": "view", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "decimals", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ] + }, + { + "type": "function", + "name": "decreaseAllowance", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "subtractedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "increaseAllowance", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "addedValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "name", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ] + }, + { + "type": "function", + "name": "symbol", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ] + }, + { + "type": "function", + "name": "totalSupply", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "transfer", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "transferFrom", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "tx_hash": "0xe3975ad38dc69390a8e4fdbafc4b67c00b5cff2c2671ffab5ee36c46b685a4d9", + "block_number": 40907398, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "Coordinator": { + "address": "0xF429C1f2d42765FE2b04CC62ab037564C2C66e5E", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_application", + "type": "address", + "internalType": "contract ITACoChildApplication" + }, + { + "name": "_timeout", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "_maxDkgSize", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "_admin", + "type": "address", + "internalType": "address" + }, + { + "name": "_currency", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_feeRatePerSecond", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "event", + "name": "AggregationPosted", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "node", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "aggregatedTranscriptDigest", + "type": "bytes32", + "internalType": "bytes32", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminDelayChangeCanceled", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminDelayChangeScheduled", + "inputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48", + "indexed": false + }, + { + "name": "effectSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminTransferCanceled", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminTransferScheduled", + "inputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "acceptSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EndRitual", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "successful", + "type": "bool", + "internalType": "bool", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MaxDkgSizeChanged", + "inputs": [ + { + "name": "oldSize", + "type": "uint16", + "internalType": "uint16", + "indexed": false + }, + { + "name": "newSize", + "type": "uint16", + "internalType": "uint16", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ParticipantPublicKeySet", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "participant", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "publicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word2", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "internalType": "struct BLS12381.G2Point", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "previousAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "newAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "account", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleRevoked", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "account", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StartAggregationRound", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StartRitual", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "authority", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "participants", + "type": "address[]", + "internalType": "address[]", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TimeoutChanged", + "inputs": [ + { + "name": "oldTimeout", + "type": "uint32", + "internalType": "uint32", + "indexed": false + }, + { + "name": "newTimeout", + "type": "uint32", + "internalType": "uint32", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TranscriptPosted", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "node", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "transcriptDigest", + "type": "bytes32", + "internalType": "bytes32", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "INITIATOR_ROLE", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "TREASURY_ROLE", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "acceptDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "application", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoChildApplication" + } + ] + }, + { + "type": "function", + "name": "beginDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "cancelDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "changeDefaultAdminDelay", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "cohortFingerprint", + "stateMutability": "pure", + "inputs": [ + { + "name": "nodes", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "currency", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IERC20" + } + ] + }, + { + "type": "function", + "name": "defaultAdmin", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "defaultAdminDelay", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "defaultAdminDelayIncreaseWait", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "feeRatePerSecond", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "getAuthority", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "getParticipantFromProvider", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "aggregated", + "type": "bool", + "internalType": "bool" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "internalType": "struct Coordinator.Participant" + } + ] + }, + { + "type": "function", + "name": "getParticipants", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "aggregated", + "type": "bool", + "internalType": "bool" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "internalType": "struct Coordinator.Participant[]" + } + ] + }, + { + "type": "function", + "name": "getProviderPublicKey", + "stateMutability": "view", + "inputs": [ + { + "name": "_provider", + "type": "address", + "internalType": "address" + }, + { + "name": "_ritualId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word2", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "internalType": "struct BLS12381.G2Point" + } + ] + }, + { + "type": "function", + "name": "getPublicKeyFromRitualId", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "dkgPublicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + } + ] + }, + { + "type": "function", + "name": "getRitualIdFromPublicKey", + "stateMutability": "view", + "inputs": [ + { + "name": "dkgPublicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + } + ], + "outputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "getRitualInitiationCost", + "stateMutability": "view", + "inputs": [ + { + "name": "providers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "getRitualState", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum Coordinator.RitualState" + } + ] + }, + { + "type": "function", + "name": "getRoleAdmin", + "stateMutability": "view", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "getThresholdForRitualSize", + "stateMutability": "pure", + "inputs": [ + { + "name": "size", + "type": "uint16", + "internalType": "uint16" + } + ], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "type": "function", + "name": "grantRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "hasRole", + "stateMutability": "view", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "initiateRitual", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "providers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "authority", + "type": "address", + "internalType": "address" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "accessController", + "type": "address", + "internalType": "contract IEncryptionAuthorizer" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "isEncryptionAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "evidence", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "ciphertextHeader", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isInitiationPublic", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isProviderPublicKeySet", + "stateMutability": "view", + "inputs": [ + { + "name": "_provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isRitualFinalized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "makeInitiationPublic", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "maxDkgSize", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "type": "function", + "name": "numberOfRituals", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "pendingDefaultAdmin", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "pendingDefaultAdminDelay", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "pendingFees", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "postAggregation", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "aggregatedTranscript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "dkgPublicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "postTranscript", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "processPendingFee", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "renounceRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "revokeRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "rituals", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "initiator", + "type": "address", + "internalType": "address" + }, + { + "name": "initTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "totalTranscripts", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "totalAggregations", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "authority", + "type": "address", + "internalType": "address" + }, + { + "name": "dkgSize", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "aggregationMismatch", + "type": "bool", + "internalType": "bool" + }, + { + "name": "accessController", + "type": "address", + "internalType": "contract IEncryptionAuthorizer" + }, + { + "name": "publicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + }, + { + "name": "aggregatedTranscript", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "function", + "name": "rollbackDefaultAdminDelay", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setMaxDkgSize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newSize", + "type": "uint16", + "internalType": "uint16" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setProviderPublicKey", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_publicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word2", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "internalType": "struct BLS12381.G2Point" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setReimbursementPool", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "pool", + "type": "address", + "internalType": "contract IReimbursementPool" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setRitualAuthority", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "authority", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setTimeout", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newTimeout", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "supportsInterface", + "stateMutability": "view", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "timeout", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "totalPendingFees", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "withdrawTokens", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [] + } + ], + "tx_hash": "0x4fa1c77a0091fe7a7720f605794174d1d0978b0c8e5c7d0a283854e0f8595ed9", + "block_number": 40907412, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "GlobalAllowList": { + "address": "0x5Ff235481bbDBF5dFCC908d987506FA6a8696678", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "contract Coordinator" + }, + { + "name": "_admin", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "event", + "name": "DefaultAdminDelayChangeCanceled", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminDelayChangeScheduled", + "inputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48", + "indexed": false + }, + { + "name": "effectSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminTransferCanceled", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminTransferScheduled", + "inputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "acceptSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "previousAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "newAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "account", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleRevoked", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "account", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "acceptDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "authorize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "addresses", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "beginDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "cancelDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "changeDefaultAdminDelay", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "coordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract Coordinator" + } + ] + }, + { + "type": "function", + "name": "deauthorize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "addresses", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "defaultAdmin", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "defaultAdminDelay", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "defaultAdminDelayIncreaseWait", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "getRoleAdmin", + "stateMutability": "view", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "grantRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "hasRole", + "stateMutability": "view", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isAddressAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "encryptor", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "evidence", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "ciphertextHeader", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "pendingDefaultAdmin", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "pendingDefaultAdminDelay", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "renounceRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "revokeRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "rollbackDefaultAdminDelay", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setCoordinator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "contract Coordinator" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "supportsInterface", + "stateMutability": "view", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "tx_hash": "0x9f04cb85e1bacd317029d5eebdd30cefa772820a2e22d1a2e2f9d67f69e60773", + "block_number": 40907436, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + } } } \ No newline at end of file From 5d5c4fca4ef1026c4bce1d61b6646334aba3d941 Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 19:24:37 +0200 Subject: [PATCH 08/12] Update Tapir registry with SubscriptionManager artifacts --- deployment/artifacts/tapir.json | 485 ++++++++++++++++++++++++++++++++ 1 file changed, 485 insertions(+) diff --git a/deployment/artifacts/tapir.json b/deployment/artifacts/tapir.json index 7c33cb28..7d80b290 100644 --- a/deployment/artifacts/tapir.json +++ b/deployment/artifacts/tapir.json @@ -5282,6 +5282,491 @@ "tx_hash": "0x9f04cb85e1bacd317029d5eebdd30cefa772820a2e22d1a2e2f9d67f69e60773", "block_number": 40907436, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "SubscriptionManager": { + "address": "0xb9015d7B35Ce7c81ddE38eF7136Baa3B1044f313", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFeeRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFeeRate", + "type": "uint256" + } + ], + "name": "FeeRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes16", + "name": "policyId", + "type": "bytes16" + }, + { + "indexed": true, + "internalType": "address", + "name": "sponsor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "size", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "endTimestamp", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "cost", + "type": "uint256" + } + ], + "name": "PolicyCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SET_RATE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAW_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes16", + "name": "_policyId", + "type": "bytes16" + }, + { + "internalType": "address", + "name": "_policyOwner", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_size", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "_startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_endTimestamp", + "type": "uint32" + } + ], + "name": "createPolicy", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "feeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes16", + "name": "_policyID", + "type": "bytes16" + } + ], + "name": "getPolicy", + "outputs": [ + { + "components": [ + { + "internalType": "address payable", + "name": "sponsor", + "type": "address" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "endTimestamp", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "size", + "type": "uint16" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "internalType": "struct SubscriptionManager.Policy", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_size", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "_startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_endTimestamp", + "type": "uint32" + } + ], + "name": "getPolicyCost", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_feeRate", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes16", + "name": "_policyID", + "type": "bytes16" + } + ], + "name": "isPolicyActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_ratePerSecond", + "type": "uint256" + } + ], + "name": "setFeeRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + } + ], + "name": "sweep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "tx_hash": "0xf502961a38a98d7a59abe4c28d354fbcd213a967447a548af7441c3fe9547422", + "block_number": "25203956", + "deployer": "0xA5DC704642d9630636dc7d4976da9e46dcEd8BCD" } } } \ No newline at end of file From 2ab8be10f49e975550c31c18dfbf363aafd67be2 Mon Sep 17 00:00:00 2001 From: derekpierre Date: Fri, 6 Oct 2023 14:50:22 -0400 Subject: [PATCH 09/12] Add configure staking script for Tapir nodes set up. --- deployment/constants.py | 9 ++++ scripts/tapir/configure_staking.py | 71 ++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 scripts/tapir/configure_staking.py diff --git a/deployment/constants.py b/deployment/constants.py index fde7a57e..9cba8258 100644 --- a/deployment/constants.py +++ b/deployment/constants.py @@ -23,3 +23,12 @@ "0x210eeac07542f815ebb6fd6689637d8ca2689392": "0xf48F720A2Ed237c24F5A7686543D90596bb8D44D", "0x48C8039c32F4c6f5cb206A5911C8Ae814929C16B": "0xce057adc39dcD1b3eA28661194E8963481CC48b2", } + +TAPIR_NODES = { + # staking provider -> operator + "0x05Be6D76d2282D24691E28E3Dc1c1A9709d70fa1": "0x91d12AB1EffBa82A4756ea029D40DE3fCD8f0255", + "0xd274f0060256c186479f2b9f51615003cbcd19E6": "0xB6e188a88948d2d9bB5A3Eb05B7aC96A85A8BF07", + "0xA7165c0229544c84b417e53a1D3ab717EA4b4587": "0x5d01059e669081861F8D9A4082a3A2ed6EB46A4B", + "0x18F3a9ae64339E4FcfeBe1ac89Bc51aC3c83C22E": "0x131617ed5894Fe9f5A4B97a276ec99430A0a8B23", + "0xcbE2F626d84c556AbA674FABBbBDdbED6B39d87b": "0xb057B982fB575509047e90cf5087c9B863a2022d", +} diff --git a/scripts/tapir/configure_staking.py b/scripts/tapir/configure_staking.py new file mode 100644 index 00000000..8c8d88b1 --- /dev/null +++ b/scripts/tapir/configure_staking.py @@ -0,0 +1,71 @@ +#!/usr/bin/python3 + +from ape import networks, project +from deployment.constants import ARTIFACTS_DIR, TAPIR_NODES +from deployment.params import Transactor +from deployment.registry import contracts_from_registry +from deployment.utils import check_plugins + +TAPIR_REGISTRY_FILEPATH = ARTIFACTS_DIR / "tapir.json" + + +def configure_sepolia_root(transactor: Transactor) -> int: + """Configures ThresholdStaking and TACoApplication on Sepolia.""" + deployments = contracts_from_registry(filepath=TAPIR_REGISTRY_FILEPATH) + + # Set up Tapir stakes on Sepolia + eth_network = networks.ethereum.sepolia + with eth_network.use_provider("infura"): + taco_application_contract = deployments[project.TACoApplication.contract_type.name] + threshold_staking_contract = deployments[project.TestnetThresholdStaking.contract_type.name] + + min_stake_size = taco_application_contract.minimumAuthorization() + for staking_provider, operator in TAPIR_NODES.items(): + # staking + transactor.transact( + threshold_staking_contract.setRoles, + staking_provider, + transactor.get_account().address, + staking_provider, + staking_provider, + ) + + transactor.transact( + threshold_staking_contract.authorizationIncreased, + staking_provider, + 0, + min_stake_size, + ) + + # bonding + transactor.transact(taco_application_contract.bondOperator, staking_provider, operator) + + return min_stake_size + + +def configure_mumbai_root(transactor: Transactor, stake_size: int): + """Configures MockTACoApplication on Mumbai.""" + deployments = contracts_from_registry(filepath=TAPIR_REGISTRY_FILEPATH) + + # Set up Tapir stakes on Mumbai + poly_network = networks.polygon.mumbai + with poly_network.use_provider("infura"): + mock_taco_application_contract = deployments[project.MockPolygonChild.contract_type.name] + + for staking_provider, operator in TAPIR_NODES.items(): + # staking + transactor.transact( + mock_taco_application_contract.updateAuthorization, staking_provider, stake_size + ) + + # bonding + transactor.transact( + mock_taco_application_contract.updateOperator, staking_provider, operator + ) + + +def main(): + check_plugins() + transactor = Transactor() + stake_size = configure_sepolia_root(transactor) + configure_mumbai_root(transactor, stake_size) From 40001c68cf7b07f2bcad862092a3384c802ba4fb Mon Sep 17 00:00:00 2001 From: derekpierre Date: Fri, 6 Oct 2023 15:56:53 -0400 Subject: [PATCH 10/12] Update confirm_operator_addresses script for tapir. --- scripts/tapir/confirm_operator_addresses.py | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 scripts/tapir/confirm_operator_addresses.py diff --git a/scripts/tapir/confirm_operator_addresses.py b/scripts/tapir/confirm_operator_addresses.py new file mode 100644 index 00000000..c22951c2 --- /dev/null +++ b/scripts/tapir/confirm_operator_addresses.py @@ -0,0 +1,23 @@ +#!/usr/bin/python3 + +from ape import project +from deployment.constants import ARTIFACTS_DIR, TAPIR_NODES +from deployment.params import Transactor +from deployment.registry import contracts_from_registry +from deployment.utils import check_plugins + +REGISTRY_FILEPATH = ARTIFACTS_DIR / "tapir.json" + + +def main(): + """ + Confirm tapir operator addresses on the Sepolia side of the bridge + + ape run tapir confirm_operator_addresses --network ethereum:sepolia:infura + """ + check_plugins() + transactor = Transactor() + deployments = contracts_from_registry(filepath=REGISTRY_FILEPATH) + mock_polygon_root = deployments[project.MockPolygonRoot.contract_type.name] + for _, operator in TAPIR_NODES.items(): + transactor.transact(mock_polygon_root.confirmOperatorAddress, operator) From 0315e3327712102b9bb2ccbb3465e1ea34f0e845 Mon Sep 17 00:00:00 2001 From: derekpierre Date: Fri, 6 Oct 2023 16:02:54 -0400 Subject: [PATCH 11/12] Fix linter error. --- contracts/contracts/testnet/TapirSet.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/contracts/testnet/TapirSet.sol b/contracts/contracts/testnet/TapirSet.sol index 28375571..e1d7f8f6 100644 --- a/contracts/contracts/testnet/TapirSet.sol +++ b/contracts/contracts/testnet/TapirSet.sol @@ -7,7 +7,6 @@ import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "../coordination/TACoChildApplication.sol"; - contract TapirTACoChildApplication is TACoChildApplication, Ownable { constructor(ITACoChildToRoot _rootApplication) TACoChildApplication(_rootApplication) {} From 0f7a4d26722594b5dfad205e495d3b57d48d82d5 Mon Sep 17 00:00:00 2001 From: Kieran Prasch Date: Fri, 6 Oct 2023 22:19:20 +0200 Subject: [PATCH 12/12] Include a script to grant the initiator role. --- scripts/tapir/grant_initiator_role.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 scripts/tapir/grant_initiator_role.py diff --git a/scripts/tapir/grant_initiator_role.py b/scripts/tapir/grant_initiator_role.py new file mode 100644 index 00000000..890d7928 --- /dev/null +++ b/scripts/tapir/grant_initiator_role.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 + + +from ape import project + +from deployment.constants import ARTIFACTS_DIR +from deployment.params import Transactor +from deployment.registry import contracts_from_registry +from deployment.utils import check_plugins + +ROOT_REGISTRY_FILEPATH = ARTIFACTS_DIR / "tapir.json" + + +def main(): + check_plugins() + transactor = Transactor() + deployments = contracts_from_registry(filepath=ROOT_REGISTRY_FILEPATH) + coordinator = deployments[project.Coordinator.contract_type.name] + initiator_role_hash = coordinator.INITIATOR_ROLE() + transactor.transact( + coordinator.grantRole, + initiator_role_hash, + transactor.get_account().address, # <- new initiator + )