@superfluid-finance/ethereum-contracts 1.2.3-dev.f94fdbb.0 → 1.3.1-dev.b8455ea.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/AccessControl.json +3 -3
- package/build/contracts/AccessControlEnumerable.json +3 -3
- package/build/contracts/Address.json +5 -5
- package/build/contracts/AgreementBase.json +13 -13
- package/build/contracts/AgreementLibrary.json +7 -7
- package/build/contracts/BaseRelayRecipient.json +5 -5
- package/build/contracts/BatchLiquidator.json +179 -179
- package/build/contracts/BatchOperation.json +5 -5
- package/build/contracts/CFAv1Library.json +5 -5
- package/build/contracts/CallUtils.json +7 -7
- package/build/contracts/ClosingOnUpdateFlowTestApp.json +2107 -1917
- package/build/contracts/ConstantFlowAgreementV1.json +8 -8
- package/build/contracts/Context.json +3 -3
- package/build/contracts/ContextDefinitions.json +5 -5
- package/build/contracts/Create2.json +5 -5
- package/build/contracts/CustomSuperTokenBase.json +3 -3
- package/build/contracts/ERC165.json +3 -3
- package/build/contracts/ERC1820Implementer.json +5 -5
- package/build/contracts/ERC1820RegistryCompiled.json +7 -7
- package/build/contracts/ERC20.json +5 -5
- package/build/contracts/ERC20Burnable.json +3 -3
- package/build/contracts/ERC20Pausable.json +3 -3
- package/build/contracts/ERC20PresetMinterPauser.json +5 -5
- package/build/contracts/ERC20WithTokenInfo.json +3 -3
- package/build/contracts/ERC777Helper.json +7 -7
- package/build/contracts/ERC777RecipientDrainingGas.json +839 -839
- package/build/contracts/ERC777RecipientReverting.json +839 -839
- package/build/contracts/EnumerableSet.json +5 -5
- package/build/contracts/EventsEmitter.json +47 -47
- package/build/contracts/ExclusiveInflowTestApp.json +2107 -1917
- package/build/contracts/FixedSizeData.json +213 -213
- package/build/contracts/FlowExchangeTestApp.json +2107 -1917
- package/build/contracts/FlowOperatorDefinitions.json +5 -5
- package/build/contracts/FullUpgradableSuperTokenProxy.json +226 -312
- package/build/contracts/IAccessControl.json +3 -3
- package/build/contracts/IAccessControlEnumerable.json +3 -3
- package/build/contracts/IConstantFlowAgreementV1.json +451 -444
- package/build/contracts/IDAv1Library.json +5 -5
- package/build/contracts/IERC165.json +3 -3
- package/build/contracts/IERC1820Implementer.json +3 -3
- package/build/contracts/IERC1820Registry.json +3 -3
- package/build/contracts/IERC20.json +3 -3
- package/build/contracts/IERC20Metadata.json +3 -3
- package/build/contracts/IERC777.json +3 -3
- package/build/contracts/IERC777Recipient.json +3 -3
- package/build/contracts/IERC777Sender.json +3 -3
- package/build/contracts/IInstantDistributionAgreementV1.json +570 -559
- package/build/contracts/IMaticBridgedNativeSuperToken.json +71 -32
- package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +3 -3
- package/build/contracts/IMultiSigWallet.json +3 -3
- package/build/contracts/IPureSuperToken.json +71 -32
- package/build/contracts/IPureSuperTokenCustom.json +3 -3
- package/build/contracts/IRelayRecipient.json +3 -3
- package/build/contracts/IResolver.json +3 -3
- package/build/contracts/ISETH.json +71 -32
- package/build/contracts/ISETHCustom.json +3 -3
- package/build/contracts/ISuperAgreement.json +3 -3
- package/build/contracts/ISuperApp.json +179 -173
- package/build/contracts/ISuperToken.json +522 -483
- package/build/contracts/ISuperTokenFactory.json +3 -3
- package/build/contracts/ISuperfluid.json +633 -628
- package/build/contracts/ISuperfluidGovernance.json +134 -133
- package/build/contracts/ISuperfluidToken.json +403 -394
- package/build/contracts/ITOGAv1.json +1211 -1211
- package/build/contracts/ITOGAv2.json +1211 -1211
- package/build/contracts/Initializable.json +3 -3
- package/build/contracts/InstantDistributionAgreementV1.json +10 -10
- package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +194 -194
- package/build/contracts/NonClosableOutflowTestApp.json +2107 -1917
- package/build/contracts/Ownable.json +3 -3
- package/build/contracts/Pausable.json +3 -3
- package/build/contracts/Proxy.json +3 -3
- package/build/contracts/PureSuperToken.json +91 -91
- package/build/contracts/Resolver.json +96 -96
- package/build/contracts/SETHProxy.json +199 -199
- package/build/contracts/SafeCast.json +5 -5
- package/build/contracts/SafeERC20.json +5 -5
- package/build/contracts/SafeMath.json +5 -5
- package/build/contracts/SelfDeletingFlowTestApp.json +2107 -1917
- package/build/contracts/SlotsBitmapLibrary.json +7 -7
- package/build/contracts/Strings.json +5 -5
- package/build/contracts/SuperAppBase.json +3 -3
- package/build/contracts/SuperAppDefinitions.json +5 -5
- package/build/contracts/SuperToken.json +2262 -2262
- package/build/contracts/SuperTokenFactory.json +582 -582
- package/build/contracts/SuperTokenFactoryBase.json +576 -576
- package/build/contracts/SuperTokenFactoryHelper.json +578 -578
- package/build/contracts/SuperUpgrader.json +687 -687
- package/build/contracts/Superfluid.json +6648 -6678
- package/build/contracts/SuperfluidFrameworkDeployer.json +526 -526
- package/build/contracts/SuperfluidGovernanceBase.json +13 -13
- package/build/contracts/SuperfluidGovernanceConfigs.json +5 -5
- package/build/contracts/SuperfluidGovernanceII.json +21 -21
- package/build/contracts/SuperfluidGovernanceIIProxy.json +20 -20
- package/build/contracts/SuperfluidLoader.json +147 -147
- package/build/contracts/SuperfluidToken.json +1269 -1269
- package/build/contracts/TOGA.json +1221 -1221
- package/build/contracts/TestGovernance.json +315 -315
- package/build/contracts/TestToken.json +475 -561
- package/build/contracts/TokenCustodian.json +220 -220
- package/build/contracts/TokenInfo.json +3 -3
- package/build/contracts/UUPSProxiable.json +136 -136
- package/build/contracts/UUPSProxy.json +87 -87
- package/build/contracts/UUPSUtils.json +43 -43
- package/build/contracts-sizes.txt +3 -3
- package/contracts/agreements/AgreementBase.sol +1 -1
- package/contracts/agreements/AgreementLibrary.sol +1 -1
- package/contracts/agreements/ConstantFlowAgreementV1.sol +1 -1
- package/contracts/agreements/InstantDistributionAgreementV1.sol +1 -1
- package/contracts/gov/SuperfluidGovernanceBase.sol +1 -1
- package/contracts/gov/SuperfluidGovernanceII.sol +1 -1
- package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +7 -10
- package/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol +11 -18
- package/contracts/interfaces/superfluid/ISuperApp.sol +7 -9
- package/contracts/interfaces/superfluid/ISuperToken.sol +36 -44
- package/contracts/interfaces/superfluid/ISuperfluid.sol +17 -21
- package/contracts/interfaces/superfluid/ISuperfluidGovernance.sol +1 -1
- package/contracts/interfaces/superfluid/ISuperfluidToken.sol +13 -14
- package/contracts/libs/BaseRelayRecipient.sol +1 -1
- package/contracts/libs/CallUtils.sol +1 -1
- package/contracts/libs/ERC1820RegistryCompiled.sol +1 -1
- package/contracts/libs/ERC777Helper.sol +1 -1
- package/contracts/libs/EventsEmitter.sol +2 -2
- package/contracts/libs/FixedSizeData.sol +2 -2
- package/contracts/libs/SlotsBitmapLibrary.sol +1 -1
- package/contracts/mocks/AgreementMock.sol +1 -1
- package/contracts/mocks/CFAAppMocks.sol +6 -6
- package/contracts/mocks/CFALibraryMock.sol +2 -2
- package/contracts/mocks/CallUtilsMock.sol +1 -1
- package/contracts/mocks/CallUtilsTester.sol +1 -1
- package/contracts/mocks/CustomSuperTokenMock.sol +1 -1
- package/contracts/mocks/ERC777SenderRecipientMock.sol +1 -1
- package/contracts/mocks/FakeSuperfluidMock.sol +1 -1
- package/contracts/mocks/ForwarderMock.sol +1 -1
- package/contracts/mocks/IDASuperAppTester.sol +2 -2
- package/contracts/mocks/IDAv1LibraryMock.sol +3 -3
- package/contracts/mocks/MockSmartWallet.sol +1 -1
- package/contracts/mocks/MultiFlowTesterApp.sol +2 -2
- package/contracts/mocks/SuperAppMocks.sol +15 -12
- package/contracts/mocks/SuperTokenFactoryMock.sol +1 -1
- package/contracts/mocks/SuperTokenMock.sol +1 -1
- package/contracts/mocks/SuperfluidDestructorMock.sol +1 -1
- package/contracts/mocks/SuperfluidGovernanceIIMock.sol +1 -1
- package/contracts/mocks/SuperfluidMock.sol +2 -2
- package/contracts/mocks/UUPSProxiableMock.sol +1 -1
- package/contracts/superfluid/FullUpgradableSuperTokenProxy.sol +2 -2
- package/contracts/superfluid/SuperToken.sol +1 -1
- package/contracts/superfluid/SuperTokenFactory.sol +1 -1
- package/contracts/superfluid/Superfluid.sol +4 -4
- package/contracts/superfluid/SuperfluidToken.sol +1 -1
- package/contracts/tokens/MaticBridgedNativeSuperToken.sol +1 -1
- package/contracts/tokens/PureSuperToken.sol +1 -1
- package/contracts/tokens/SETH.sol +1 -1
- package/contracts/upgradability/UUPSProxiable.sol +1 -1
- package/contracts/upgradability/UUPSProxy.sol +1 -1
- package/contracts/upgradability/UUPSUtils.sol +1 -1
- package/contracts/utils/BatchLiquidator.sol +1 -1
- package/contracts/utils/Resolver.sol +1 -1
- package/contracts/utils/SuperUpgrader.sol +6 -6
- package/contracts/utils/SuperfluidLoader.sol +1 -1
- package/contracts/utils/TOGA.sol +1 -1
- package/contracts/utils/TestGovernance.sol +2 -2
- package/contracts/utils/TestToken.sol +2 -2
- package/contracts/utils/TokenCustodian.sol +1 -1
- package/package.json +5 -3
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"type": "function"
|
|
207
207
|
}
|
|
208
208
|
],
|
|
209
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
209
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
|
|
210
210
|
"bytecode": "0x",
|
|
211
211
|
"deployedBytecode": "0x",
|
|
212
212
|
"immutableReferences": {},
|
|
@@ -4060,11 +4060,11 @@
|
|
|
4060
4060
|
},
|
|
4061
4061
|
"compiler": {
|
|
4062
4062
|
"name": "solc",
|
|
4063
|
-
"version": "0.8.
|
|
4063
|
+
"version": "0.8.14+commit.80d49f37.Emscripten.clang"
|
|
4064
4064
|
},
|
|
4065
4065
|
"networks": {},
|
|
4066
4066
|
"schemaVersion": "3.4.7",
|
|
4067
|
-
"updatedAt": "2022-06-
|
|
4067
|
+
"updatedAt": "2022-06-15T22:03:58.445Z",
|
|
4068
4068
|
"devdoc": {
|
|
4069
4069
|
"details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.",
|
|
4070
4070
|
"kind": "dev",
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
"type": "function"
|
|
250
250
|
}
|
|
251
251
|
],
|
|
252
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
252
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows enumerating the members of each role.\",\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":\"AccessControlEnumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]}},\"version\":1}",
|
|
253
253
|
"bytecode": "0x",
|
|
254
254
|
"deployedBytecode": "0x",
|
|
255
255
|
"immutableReferences": {},
|
|
@@ -1740,11 +1740,11 @@
|
|
|
1740
1740
|
},
|
|
1741
1741
|
"compiler": {
|
|
1742
1742
|
"name": "solc",
|
|
1743
|
-
"version": "0.8.
|
|
1743
|
+
"version": "0.8.14+commit.80d49f37.Emscripten.clang"
|
|
1744
1744
|
},
|
|
1745
1745
|
"networks": {},
|
|
1746
1746
|
"schemaVersion": "3.4.7",
|
|
1747
|
-
"updatedAt": "2022-06-
|
|
1747
|
+
"updatedAt": "2022-06-15T22:03:58.447Z",
|
|
1748
1748
|
"devdoc": {
|
|
1749
1749
|
"details": "Extension of {AccessControl} that allows enumerating the members of each role.",
|
|
1750
1750
|
"kind": "dev",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractName": "Address",
|
|
3
3
|
"abi": [],
|
|
4
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
5
|
-
"bytecode": "
|
|
6
|
-
"deployedBytecode": "
|
|
4
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]}},\"version\":1}",
|
|
5
|
+
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a109fc12d4107d2276b0f3393957cc47a7eea803799facbb888435dd769fdc3d64736f6c634300080e0033",
|
|
6
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a109fc12d4107d2276b0f3393957cc47a7eea803799facbb888435dd769fdc3d64736f6c634300080e0033",
|
|
7
7
|
"immutableReferences": {},
|
|
8
8
|
"generatedSources": [],
|
|
9
9
|
"deployedGeneratedSources": [],
|
|
@@ -3966,11 +3966,11 @@
|
|
|
3966
3966
|
},
|
|
3967
3967
|
"compiler": {
|
|
3968
3968
|
"name": "solc",
|
|
3969
|
-
"version": "0.8.
|
|
3969
|
+
"version": "0.8.14+commit.80d49f37.Emscripten.clang"
|
|
3970
3970
|
},
|
|
3971
3971
|
"networks": {},
|
|
3972
3972
|
"schemaVersion": "3.4.7",
|
|
3973
|
-
"updatedAt": "2022-06-
|
|
3973
|
+
"updatedAt": "2022-06-15T22:03:58.468Z",
|
|
3974
3974
|
"devdoc": {
|
|
3975
3975
|
"details": "Collection of functions related to the address type",
|
|
3976
3976
|
"kind": "dev",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"type": "function"
|
|
113
113
|
}
|
|
114
114
|
],
|
|
115
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
115
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uuid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"name\":\"CodeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCodeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"updateCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"Get the type of the agreement class\"},\"getCodeAddress()\":{\"details\":\"Get current implementation code address.\"},\"proxiableUUID()\":{\"details\":\"Proxiable UUID marker function, this would help to avoid wrong logic contract to be used for upgrading. NOTE: The semantics of the UUID deviates from the actual UUPS standard, where it is equivalent of _IMPLEMENTATION_SLOT.\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}}},\"title\":\"Superfluid agreement base boilerplate contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/agreements/AgreementBase.sol\":\"AgreementBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xa34a1b2dd83146a5ed280509f71a1c020ce1985e603da0fc3599eff71d234ab4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0c9e9eb4f857ddef830bd7bc9523151f7de82bf4ecfca1aeb9e8de1588e2e07d\",\"dweb:/ipfs/QmaFU7E1XGTYiHCQicCjLNSzYyBgEHdR5pcC64MzCCsNbC\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x3eec5a3bf337cd319c1918fd1b16f350cf5f6850ac71f6859066fbf86e734ff4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cda19a2f5ca18e79c1e2300c8efac84c718df76c4fb313f59f84264a4c6b398a\",\"dweb:/ipfs/QmfQiwgDH5Q64w5ufBnDzVaeWv6WCZ6fLTrYu1FSYfBGhq\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0xabe3beb46dff1433d7ae61fe470fc347967d5a5b09d48fa45f35ddb2735d61f2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ad0fdb3210d3b0ed62886decdeef62b43bdbdd59bd55fc5ea3d636e97fbfb65d\",\"dweb:/ipfs/QmPjd6ehqgoiHkrf2g2h9AZRxKakqxsGx1GTiy5DSwfYJg\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xe624225773a60f62c7a0687afb0536ba19a17e4e5605ae71e8af77a0287aca59\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://4294e5eb5b194477bca3b8ca04ca92a6fe72dd6cf8da8f0d942a4a86c41c1c7f\",\"dweb:/ipfs/QmdfPXZxJPaBjKNfC8joTcvEhWammJHzRACB1S18sFYfd7\"]}},\"version\":1}",
|
|
116
116
|
"bytecode": "0x",
|
|
117
117
|
"deployedBytecode": "0x",
|
|
118
118
|
"immutableReferences": {},
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"deployedGeneratedSources": [],
|
|
121
121
|
"sourceMap": "",
|
|
122
122
|
"deployedSourceMap": "",
|
|
123
|
-
"source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.
|
|
123
|
+
"source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.14;\n\nimport { UUPSProxiable } from \"../upgradability/UUPSProxiable.sol\";\nimport { ISuperAgreement } from \"../interfaces/superfluid/ISuperAgreement.sol\";\n\n\n/**\n * @title Superfluid agreement base boilerplate contract\n * @author Superfluid\n */\nabstract contract AgreementBase is\n UUPSProxiable,\n ISuperAgreement\n{\n address immutable internal _host;\n\n constructor(address host)\n {\n _host = host;\n }\n\n function proxiableUUID()\n public view override\n returns (bytes32)\n {\n return ISuperAgreement(this).agreementType();\n }\n\n function updateCode(address newAddress)\n external override\n {\n require(msg.sender == _host, \"only host can update code\");\n return _updateCodeAddress(newAddress);\n }\n\n}\n",
|
|
124
124
|
"sourcePath": "/home/runner/work/protocol-monorepo/protocol-monorepo/packages/ethereum-contracts/contracts/agreements/AgreementBase.sol",
|
|
125
125
|
"ast": {
|
|
126
126
|
"absolutePath": "project:/contracts/agreements/AgreementBase.sol",
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
17271
|
|
133
133
|
],
|
|
134
134
|
"UUPSProxiable": [
|
|
135
|
-
|
|
135
|
+
34857
|
|
136
136
|
]
|
|
137
137
|
},
|
|
138
138
|
"id": 4376,
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"literals": [
|
|
145
145
|
"solidity",
|
|
146
146
|
"0.8",
|
|
147
|
-
".
|
|
147
|
+
".14"
|
|
148
148
|
],
|
|
149
149
|
"nodeType": "PragmaDirective",
|
|
150
150
|
"src": "35:23:30"
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
"nameLocation": "-1:-1:-1",
|
|
157
157
|
"nodeType": "ImportDirective",
|
|
158
158
|
"scope": 4376,
|
|
159
|
-
"sourceUnit":
|
|
159
|
+
"sourceUnit": 34858,
|
|
160
160
|
"src": "60:67:30",
|
|
161
161
|
"symbolAliases": [
|
|
162
162
|
{
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"name": "UUPSProxiable",
|
|
166
166
|
"nodeType": "Identifier",
|
|
167
167
|
"overloadedDeclarations": [],
|
|
168
|
-
"referencedDeclaration":
|
|
168
|
+
"referencedDeclaration": 34857,
|
|
169
169
|
"src": "69:13:30",
|
|
170
170
|
"typeDescriptions": {}
|
|
171
171
|
},
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
"id": 4327,
|
|
208
208
|
"name": "UUPSProxiable",
|
|
209
209
|
"nodeType": "IdentifierPath",
|
|
210
|
-
"referencedDeclaration":
|
|
210
|
+
"referencedDeclaration": 34857,
|
|
211
211
|
"src": "336:13:30"
|
|
212
212
|
},
|
|
213
213
|
"id": 4328,
|
|
@@ -241,7 +241,7 @@
|
|
|
241
241
|
"linearizedBaseContracts": [
|
|
242
242
|
4375,
|
|
243
243
|
17271,
|
|
244
|
-
|
|
244
|
+
34857,
|
|
245
245
|
762
|
|
246
246
|
],
|
|
247
247
|
"name": "AgreementBase",
|
|
@@ -383,7 +383,7 @@
|
|
|
383
383
|
},
|
|
384
384
|
{
|
|
385
385
|
"baseFunctions": [
|
|
386
|
-
|
|
386
|
+
34797
|
|
387
387
|
],
|
|
388
388
|
"body": {
|
|
389
389
|
"id": 4354,
|
|
@@ -541,7 +541,7 @@
|
|
|
541
541
|
},
|
|
542
542
|
{
|
|
543
543
|
"baseFunctions": [
|
|
544
|
-
|
|
544
|
+
34791
|
|
545
545
|
],
|
|
546
546
|
"body": {
|
|
547
547
|
"id": 4373,
|
|
@@ -695,7 +695,7 @@
|
|
|
695
695
|
"name": "_updateCodeAddress",
|
|
696
696
|
"nodeType": "Identifier",
|
|
697
697
|
"overloadedDeclarations": [],
|
|
698
|
-
"referencedDeclaration":
|
|
698
|
+
"referencedDeclaration": 34850,
|
|
699
699
|
"src": "786:18:30",
|
|
700
700
|
"typeDescriptions": {
|
|
701
701
|
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
|
|
@@ -795,11 +795,11 @@
|
|
|
795
795
|
},
|
|
796
796
|
"compiler": {
|
|
797
797
|
"name": "solc",
|
|
798
|
-
"version": "0.8.
|
|
798
|
+
"version": "0.8.14+commit.80d49f37.Emscripten.clang"
|
|
799
799
|
},
|
|
800
800
|
"networks": {},
|
|
801
801
|
"schemaVersion": "3.4.7",
|
|
802
|
-
"updatedAt": "2022-06-
|
|
802
|
+
"updatedAt": "2022-06-15T22:03:58.483Z",
|
|
803
803
|
"devdoc": {
|
|
804
804
|
"author": "Superfluid",
|
|
805
805
|
"kind": "dev",
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractName": "AgreementLibrary",
|
|
3
3
|
"abi": [],
|
|
4
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
5
|
-
"bytecode": "
|
|
6
|
-
"deployedBytecode": "
|
|
4
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Helper library for building super agreement\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Agreement Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/agreements/AgreementLibrary.sol\":\"AgreementLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x4ad8252da82acdad4fe2b7a4fd1ebef8a7059b67c06f2af84ce86ded3ca531a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2f1c14d9882316ab33e89329ca47449f2bb5a836df5a7abfb91a823fd428b546\",\"dweb:/ipfs/QmVJQxv5e4Ki19CzoVDHbqvuBrRM6XQa7igUmXTHBANcR4\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x42b604992cf67321cc12e8bed16543df0db4eaf125b8c1c82c330ebbeb20c014\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7c18b00caf7b8be7e11f75284fb96263ce48a3984d56f2a91ec44cae4413d2fc\",\"dweb:/ipfs/QmWVzdW9KnkwAVe9g5zRuMoqCf7N89AoBfzzRr8puw5d8a\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0xcff22ed43df0f34a645e6cbe0d7c5fd08f204d769e9095bc59d7c2fe6d11b7d6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://944b8c5a37839b40ec8ee1ccfecbaf007808a61ea16c7b1351a7184606772032\",\"dweb:/ipfs/QmbUKZqZtVfqZMKYnQUygE4svatKuN9kT2ibrnxMuWXR7n\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xf16efd1ba72322e77e0d936b723c0e71eb14c23e11cf69efae8c7caa407012cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ff4bb321b72dc3332984346e5b66ad131c6132101658fe6707d7a9d043f981ab\",\"dweb:/ipfs/QmXmVD2mZ3LRb7wQZ2VcrpYhtjm21zUe5hPDDDJA1WXbFz\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0xea33d20751ffea4f4446bc04f6c10194fb4da0803a988586d41d49cf4859731c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7716b1f5eec0a7ac8780d82de4f0274ecd7059be4eec46c82b0b7adce110f10b\",\"dweb:/ipfs/QmWRQafvdCBsyfDYnevXSav1AAz8uZRRBwh2be5Z3vSfVN\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x3eec5a3bf337cd319c1918fd1b16f350cf5f6850ac71f6859066fbf86e734ff4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cda19a2f5ca18e79c1e2300c8efac84c718df76c4fb313f59f84264a4c6b398a\",\"dweb:/ipfs/QmfQiwgDH5Q64w5ufBnDzVaeWv6WCZ6fLTrYu1FSYfBGhq\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]}},\"version\":1}",
|
|
5
|
+
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b31eecdd0636c757237b975ae3a420e1d0a52686fe4d479a802a969fc116369c64736f6c634300080e0033",
|
|
6
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b31eecdd0636c757237b975ae3a420e1d0a52686fe4d479a802a969fc116369c64736f6c634300080e0033",
|
|
7
7
|
"immutableReferences": {},
|
|
8
8
|
"generatedSources": [],
|
|
9
9
|
"deployedGeneratedSources": [],
|
|
10
10
|
"sourceMap": "520:7120:31:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;520:7120:31;;;;;;;;;;;;;;;;;",
|
|
11
11
|
"deployedSourceMap": "520:7120:31:-:0;;;;;;;;",
|
|
12
|
-
"source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.
|
|
12
|
+
"source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.14;\n\nimport {\n ISuperfluidGovernance,\n ISuperfluid,\n ISuperfluidToken,\n ISuperApp,\n SuperAppDefinitions,\n ContextDefinitions\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\nimport { ISuperfluidToken } from \"../interfaces/superfluid/ISuperfluidToken.sol\";\n\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\n\n\n/**\n * @title Agreement Library\n * @author Superfluid\n * @dev Helper library for building super agreement\n */\nlibrary AgreementLibrary {\n\n using SafeCast for uint256;\n using SafeCast for int256;\n\n /**************************************************************************\n * Context helpers\n *************************************************************************/\n\n /**\n * @dev Authorize the msg.sender to access token agreement storage\n *\n * NOTE:\n * - msg.sender must be the expected host contract.\n * - it should revert on unauthorized access.\n */\n function authorizeTokenAccess(ISuperfluidToken token, bytes memory ctx)\n internal view\n returns (ISuperfluid.Context memory)\n {\n require(token.getHost() == msg.sender, \"unauthorized host\");\n require(ISuperfluid(msg.sender).isCtxValid(ctx), \"invalid ctx\");\n return ISuperfluid(msg.sender).decodeCtx(ctx);\n }\n\n /**************************************************************************\n * Agreement callback helpers\n *************************************************************************/\n\n struct CallbackInputs {\n ISuperfluidToken token;\n address account;\n bytes32 agreementId;\n bytes agreementData;\n uint256 appAllowanceGranted;\n int256 appAllowanceUsed;\n uint256 noopBit;\n }\n\n function createCallbackInputs(\n ISuperfluidToken token,\n address account,\n bytes32 agreementId,\n bytes memory agreementData\n )\n internal pure\n returns (CallbackInputs memory inputs)\n {\n inputs.token = token;\n inputs.account = account;\n inputs.agreementId = agreementId;\n inputs.agreementData = agreementData;\n }\n\n function callAppBeforeCallback(\n CallbackInputs memory inputs,\n bytes memory ctx\n )\n internal\n returns(bytes memory cbdata)\n {\n bool isSuperApp;\n bool isJailed;\n uint256 noopMask;\n (isSuperApp, isJailed, noopMask) = ISuperfluid(msg.sender).getAppManifest(ISuperApp(inputs.account));\n if (isSuperApp && !isJailed) {\n bytes memory appCtx = _pushCallbackStack(ctx, inputs);\n if ((noopMask & inputs.noopBit) == 0) {\n bytes memory callData = abi.encodeWithSelector(\n _selectorFromNoopBit(inputs.noopBit),\n inputs.token,\n address(this) /* agreementClass */,\n inputs.agreementId,\n inputs.agreementData,\n new bytes(0) // placeholder ctx\n );\n cbdata = ISuperfluid(msg.sender).callAppBeforeCallback(\n ISuperApp(inputs.account),\n callData,\n inputs.noopBit == SuperAppDefinitions.BEFORE_AGREEMENT_TERMINATED_NOOP,\n appCtx);\n }\n // [SECURITY] NOTE: ctx should be const, do not modify it ever to ensure callback stack correctness\n _popCallbackStack(ctx, 0);\n }\n }\n\n function callAppAfterCallback(\n CallbackInputs memory inputs,\n bytes memory cbdata,\n bytes /* const */ memory ctx\n )\n internal\n returns (ISuperfluid.Context memory appContext, bytes memory newCtx)\n {\n bool isSuperApp;\n bool isJailed;\n uint256 noopMask;\n (isSuperApp, isJailed, noopMask) = ISuperfluid(msg.sender).getAppManifest(ISuperApp(inputs.account));\n\n newCtx = ctx;\n if (isSuperApp && !isJailed) {\n newCtx = _pushCallbackStack(newCtx, inputs);\n if ((noopMask & inputs.noopBit) == 0) {\n bytes memory callData = abi.encodeWithSelector(\n _selectorFromNoopBit(inputs.noopBit),\n inputs.token,\n address(this) /* agreementClass */,\n inputs.agreementId,\n inputs.agreementData,\n cbdata,\n new bytes(0) // placeholder ctx\n );\n newCtx = ISuperfluid(msg.sender).callAppAfterCallback(\n ISuperApp(inputs.account),\n callData,\n inputs.noopBit == SuperAppDefinitions.AFTER_AGREEMENT_TERMINATED_NOOP,\n newCtx);\n\n appContext = ISuperfluid(msg.sender).decodeCtx(newCtx);\n\n // adjust allowance used to the range [appAllowanceWanted..appAllowanceGranted]\n appContext.appAllowanceUsed = max(0, min(\n inputs.appAllowanceGranted.toInt256(),\n max(appContext.appAllowanceWanted.toInt256(), appContext.appAllowanceUsed)));\n\n }\n // [SECURITY] NOTE: ctx should be const, do not modify it ever to ensure callback stack correctness\n newCtx = _popCallbackStack(ctx, appContext.appAllowanceUsed);\n }\n }\n\n function _selectorFromNoopBit(uint256 noopBit)\n private pure\n returns (bytes4 selector)\n {\n if (noopBit == SuperAppDefinitions.BEFORE_AGREEMENT_CREATED_NOOP) {\n return ISuperApp.beforeAgreementCreated.selector;\n } else if (noopBit == SuperAppDefinitions.BEFORE_AGREEMENT_UPDATED_NOOP) {\n return ISuperApp.beforeAgreementUpdated.selector;\n } else if (noopBit == SuperAppDefinitions.BEFORE_AGREEMENT_TERMINATED_NOOP) {\n return ISuperApp.beforeAgreementTerminated.selector;\n } else if (noopBit == SuperAppDefinitions.AFTER_AGREEMENT_CREATED_NOOP) {\n return ISuperApp.afterAgreementCreated.selector;\n } else if (noopBit == SuperAppDefinitions.AFTER_AGREEMENT_UPDATED_NOOP) {\n return ISuperApp.afterAgreementUpdated.selector;\n } else /* if (noopBit == SuperAppDefinitions.AFTER_AGREEMENT_TERMINATED_NOOP) */ {\n return ISuperApp.afterAgreementTerminated.selector;\n }\n }\n\n function _pushCallbackStack(\n bytes memory ctx,\n CallbackInputs memory inputs\n )\n private\n returns (bytes memory appCtx)\n {\n // app allowance params stack PUSH\n // pass app allowance and current allowance used to the app,\n appCtx = ISuperfluid(msg.sender).appCallbackPush(\n ctx,\n ISuperApp(inputs.account),\n inputs.appAllowanceGranted,\n inputs.appAllowanceUsed,\n inputs.token);\n }\n\n function _popCallbackStack(\n bytes memory ctx,\n int256 appAllowanceUsedDelta\n )\n private\n returns (bytes memory newCtx)\n {\n // app allowance params stack POP\n return ISuperfluid(msg.sender).appCallbackPop(ctx, appAllowanceUsedDelta);\n }\n\n /**************************************************************************\n * Misc\n *************************************************************************/\n\n function max(int256 a, int256 b) internal pure returns (int256) { return a > b ? a : b; }\n function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; }\n\n function min(int256 a, int256 b) internal pure returns (int256) { return a > b ? b : a; }\n}\n",
|
|
13
13
|
"sourcePath": "/home/runner/work/protocol-monorepo/protocol-monorepo/packages/ethereum-contracts/contracts/agreements/AgreementLibrary.sol",
|
|
14
14
|
"ast": {
|
|
15
15
|
"absolutePath": "project:/contracts/agreements/AgreementLibrary.sol",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"literals": [
|
|
49
49
|
"solidity",
|
|
50
50
|
"0.8",
|
|
51
|
-
".
|
|
51
|
+
".14"
|
|
52
52
|
],
|
|
53
53
|
"nodeType": "PragmaDirective",
|
|
54
54
|
"src": "35:23:31"
|
|
@@ -7118,11 +7118,11 @@
|
|
|
7118
7118
|
},
|
|
7119
7119
|
"compiler": {
|
|
7120
7120
|
"name": "solc",
|
|
7121
|
-
"version": "0.8.
|
|
7121
|
+
"version": "0.8.14+commit.80d49f37.Emscripten.clang"
|
|
7122
7122
|
},
|
|
7123
7123
|
"networks": {},
|
|
7124
7124
|
"schemaVersion": "3.4.7",
|
|
7125
|
-
"updatedAt": "2022-06-
|
|
7125
|
+
"updatedAt": "2022-06-15T22:03:58.484Z",
|
|
7126
7126
|
"devdoc": {
|
|
7127
7127
|
"author": "Superfluid",
|
|
7128
7128
|
"details": "Helper library for building super agreement",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"type": "function"
|
|
35
35
|
}
|
|
36
36
|
],
|
|
37
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
37
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionRecipient\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"A base contract to be inherited by any contract that want to receive relayed transactions A subclass must use \\\"_msgSender()\\\" instead of \\\"msg.sender\\\" MODIFIED FROM: https://github.com/opengsn/forwarder/blob/master/contracts/BaseRelayRecipient.sol\",\"kind\":\"dev\",\"methods\":{\"isTrustedForwarder(address)\":{\"details\":\"Check if the forwarder is trusted\"},\"versionRecipient()\":{\"details\":\"EIP 2771 version NOTE: - It is not clear if it is actually from the EIP 2771.... - https://docs.biconomy.io/guides/enable-gasless-transactions/eip-2771\"}},\"title\":\"Base relay recipient contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/BaseRelayRecipient.sol\":\"BaseRelayRecipient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/utils/IRelayRecipient.sol\":{\"keccak256\":\"0x3f531ce91c165b7581483798cc920d38828d509df6cb9d427a10c922b4627790\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c4b872da16464ec4a06422b2bf0e95594f0458cca02993cefdbc76b5f7b7a974\",\"dweb:/ipfs/Qma9nVTfu6kbLQ6y58ZnDRXX8YzKiyASWeCsdY8ue6rpdT\"]},\"project:/contracts/libs/BaseRelayRecipient.sol\":{\"keccak256\":\"0x80e88b2b66bfac6f42f06484203dbfceec079df45e13e382b8b924024e8ab0d0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e5bb938099012d66c0a9a6313c03d440f122b4b5cb2c845a2364a96b7d12e50a\",\"dweb:/ipfs/QmVZ3P4yWBFnLgJi5gsVTTtNMd5iB3NPHZ4J1DMBu6ys8x\"]}},\"version\":1}",
|
|
38
38
|
"bytecode": "0x",
|
|
39
39
|
"deployedBytecode": "0x",
|
|
40
40
|
"immutableReferences": {},
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"deployedGeneratedSources": [],
|
|
43
43
|
"sourceMap": "",
|
|
44
44
|
"deployedSourceMap": "",
|
|
45
|
-
"source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.
|
|
45
|
+
"source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.14;\n\nimport \"../interfaces/utils/IRelayRecipient.sol\";\n\n\n/**\n * @title Base relay recipient contract\n * @author Superfluid\n * @dev A base contract to be inherited by any contract that want to receive relayed transactions\n * A subclass must use \"_msgSender()\" instead of \"msg.sender\"\n * MODIFIED FROM: https://github.com/opengsn/forwarder/blob/master/contracts/BaseRelayRecipient.sol\n */\nabstract contract BaseRelayRecipient is IRelayRecipient {\n\n /**\n * @dev Check if the forwarder is trusted\n */\n function isTrustedForwarder(address forwarder) public view virtual override returns(bool);\n\n /**\n * @dev Return the transaction signer of this call\n *\n * if the call came through our trusted forwarder, return the original sender.\n * otherwise, return `msg.sender`.\n * should be used in the contract anywhere instead of msg.sender\n */\n function _getTransactionSigner() internal virtual view returns (address payable ret) {\n require(msg.data.length >= 24 && isTrustedForwarder(msg.sender), \"Not trusted forwarder\");\n // At this point we know that the sender is a trusted forwarder,\n // so we trust that the last bytes of msg.data are the verified sender address.\n // extract sender address from the end of msg.data\n assembly {\n ret := shr(96,calldataload(sub(calldatasize(),20)))\n }\n }\n\n}\n",
|
|
46
46
|
"sourcePath": "/home/runner/work/protocol-monorepo/protocol-monorepo/packages/ethereum-contracts/contracts/libs/BaseRelayRecipient.sol",
|
|
47
47
|
"ast": {
|
|
48
48
|
"absolutePath": "project:/contracts/libs/BaseRelayRecipient.sol",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"literals": [
|
|
64
64
|
"solidity",
|
|
65
65
|
"0.8",
|
|
66
|
-
".
|
|
66
|
+
".14"
|
|
67
67
|
],
|
|
68
68
|
"nodeType": "PragmaDirective",
|
|
69
69
|
"src": "35:23:58"
|
|
@@ -599,11 +599,11 @@
|
|
|
599
599
|
},
|
|
600
600
|
"compiler": {
|
|
601
601
|
"name": "solc",
|
|
602
|
-
"version": "0.8.
|
|
602
|
+
"version": "0.8.14+commit.80d49f37.Emscripten.clang"
|
|
603
603
|
},
|
|
604
604
|
"networks": {},
|
|
605
605
|
"schemaVersion": "3.4.7",
|
|
606
|
-
"updatedAt": "2022-06-
|
|
606
|
+
"updatedAt": "2022-06-15T22:03:58.621Z",
|
|
607
607
|
"devdoc": {
|
|
608
608
|
"author": "Superfluid",
|
|
609
609
|
"details": "A base contract to be inherited by any contract that want to receive relayed transactions A subclass must use \"_msgSender()\" instead of \"msg.sender\" MODIFIED FROM: https://github.com/opengsn/forwarder/blob/master/contracts/BaseRelayRecipient.sol",
|