@superfluid-finance/ethereum-contracts 1.1.1 → 1.1.2-dev.9b08025.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/README.md +11 -39
- package/build/contracts/AccessControl.json +3 -3
- package/build/contracts/AccessControlEnumerable.json +5 -3
- package/build/contracts/Address.json +5 -5
- package/build/contracts/AgreementBase.json +10 -22
- package/build/contracts/AgreementLibrary.json +28 -72
- package/build/contracts/BaseRelayRecipient.json +6 -6
- package/build/contracts/BatchLiquidator.json +17 -41
- package/build/contracts/BatchOperation.json +5 -5
- package/build/contracts/CFAv1Library.json +11 -29
- package/build/contracts/CallUtils.json +8 -8
- package/build/contracts/ClosingOnUpdateFlowTestApp.json +18 -48
- package/build/contracts/ConstantFlowAgreementV1.json +39 -105
- 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 +5 -11
- package/build/contracts/ERC165.json +3 -3
- package/build/contracts/ERC1820Implementer.json +5 -5
- package/build/contracts/ERC20.json +7 -7
- package/build/contracts/ERC20WithTokenInfo.json +7 -19
- package/build/contracts/ERC721.json +11 -7
- package/build/contracts/ERC777Helper.json +10 -16
- package/build/contracts/ERC777RecipientDrainingGas.json +17 -17
- package/build/contracts/ERC777RecipientReverting.json +16 -16
- package/build/contracts/EnumerableSet.json +5 -5
- package/build/contracts/ExclusiveInflowTestApp.json +18 -48
- package/build/contracts/FixedSizeData.json +8 -8
- package/build/contracts/FlowExchangeTestApp.json +18 -48
- package/build/contracts/FullUpgradableSuperTokenProxy.json +12 -24
- package/build/contracts/IAccessControl.json +9 -3
- package/build/contracts/IAccessControlEnumerable.json +3 -3
- package/build/contracts/IConstantFlowAgreementV1.json +9 -19
- package/build/contracts/IDAv1Library.json +11 -29
- package/build/contracts/IERC165.json +3 -3
- package/build/contracts/IERC1820Implementer.json +3 -3
- package/build/contracts/IERC1820Registry.json +7 -3
- package/build/contracts/IERC20.json +7 -3
- package/build/contracts/IERC20Metadata.json +3 -3
- package/build/contracts/IERC721.json +9 -3
- package/build/contracts/IERC721Metadata.json +3 -3
- package/build/contracts/IERC721Receiver.json +3 -3
- package/build/contracts/IERC777.json +13 -3
- package/build/contracts/IERC777Recipient.json +3 -3
- package/build/contracts/IERC777Sender.json +3 -3
- package/build/contracts/IInstantDistributionAgreementV1.json +27 -19
- package/build/contracts/IMaticBridgedNativeSuperToken.json +7 -11
- package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +7 -11
- package/build/contracts/IMultiSigWallet.json +3 -3
- package/build/contracts/INativeSuperToken.json +5 -11
- package/build/contracts/INativeSuperTokenCustom.json +5 -11
- package/build/contracts/IRelayRecipient.json +3 -3
- package/build/contracts/IResolver.json +5 -3
- package/build/contracts/ISETH.json +5 -11
- package/build/contracts/ISETHCustom.json +5 -11
- package/build/contracts/ISuperAgreement.json +5 -11
- package/build/contracts/ISuperApp.json +5 -11
- package/build/contracts/ISuperToken.json +17 -43
- package/build/contracts/ISuperTokenFactory.json +15 -27
- package/build/contracts/ISuperfluid.json +43 -107
- package/build/contracts/ISuperfluidGovernance.json +11 -35
- package/build/contracts/ISuperfluidToken.json +21 -11
- package/build/contracts/ITOGAv1.json +30 -70
- package/build/contracts/ITOGAv2.json +30 -70
- package/build/contracts/Initializable.json +3 -3
- package/build/contracts/InstantDistributionAgreementV1.json +36 -98
- package/build/contracts/Int96SafeMath.json +8 -8
- package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +18 -48
- package/build/contracts/MultiFlowApp.json +19 -49
- package/build/contracts/NativeSuperTokenProxy.json +18 -48
- package/build/contracts/NonClosableOutflowTestApp.json +18 -48
- package/build/contracts/Ownable.json +5 -3
- package/build/contracts/Proxy.json +3 -3
- package/build/contracts/Resolver.json +12 -24
- package/build/contracts/SETHProxy.json +20 -40
- package/build/contracts/SafeCast.json +5 -5
- package/build/contracts/SafeERC20.json +7 -5
- package/build/contracts/SafeMath.json +5 -5
- package/build/contracts/SelfDeletingFlowTestApp.json +18 -48
- package/build/contracts/SlotsBitmapLibrary.json +11 -17
- package/build/contracts/Strings.json +5 -5
- package/build/contracts/SuperAppBase.json +11 -35
- package/build/contracts/SuperAppDefinitions.json +5 -5
- package/build/contracts/SuperToken.json +55 -147
- package/build/contracts/SuperTokenFactory.json +33 -99
- package/build/contracts/SuperTokenFactoryBase.json +28 -94
- package/build/contracts/SuperTokenFactoryHelper.json +30 -96
- package/build/contracts/SuperUpgrader.json +20 -26
- package/build/contracts/Superfluid.json +55 -155
- package/build/contracts/SuperfluidGovernanceBase.json +34 -70
- package/build/contracts/SuperfluidGovernanceConfigs.json +5 -5
- package/build/contracts/SuperfluidGovernanceII.json +19 -49
- package/build/contracts/SuperfluidGovernanceIIProxy.json +18 -48
- package/build/contracts/SuperfluidLoader.json +18 -48
- package/build/contracts/SuperfluidToken.json +22 -54
- package/build/contracts/TOGA.json +32 -72
- package/build/contracts/TestGovernance.json +17 -41
- package/build/contracts/TestToken.json +12 -18
- package/build/contracts/TokenCustodian.json +18 -32
- package/build/contracts/TokenInfo.json +3 -3
- package/build/contracts/UInt128SafeMath.json +8 -8
- package/build/contracts/UUPSProxiable.json +12 -22
- package/build/contracts/UUPSProxy.json +12 -24
- package/build/contracts/UUPSUtils.json +8 -8
- package/build/contracts-sizes.txt +8 -8
- 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/agreements/SlotsBitmapLibrary.sol +1 -1
- package/contracts/gov/SuperfluidGovernanceBase.sol +1 -1
- package/contracts/gov/SuperfluidGovernanceII.sol +1 -1
- package/contracts/libs/CallUtils.sol +1 -1
- package/contracts/libs/ERC777Helper.sol +1 -1
- package/contracts/libs/FixedSizeData.sol +1 -1
- package/contracts/libs/Int96SafeMath.sol +1 -1
- package/contracts/libs/UInt128SafeMath.sol +1 -1
- package/contracts/mocks/AgreementMock.sol +1 -1
- package/contracts/mocks/CFAAppMocks.sol +1 -1
- package/contracts/mocks/CFALibraryMock.sol +2 -2
- package/contracts/mocks/CallUtilsMock.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 +1 -1
- package/contracts/mocks/IDAv1LibraryMock.sol +1 -1
- package/contracts/mocks/MockSmartWallet.sol +1 -1
- package/contracts/mocks/SuperAppMocks.sol +1 -1
- 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 +1 -1
- package/contracts/mocks/UUPSProxiableMock.sol +1 -1
- package/contracts/mocks/UtilsTester.sol +1 -1
- package/contracts/superfluid/SuperToken.sol +1 -1
- package/contracts/superfluid/SuperTokenFactory.sol +1 -1
- package/contracts/superfluid/Superfluid.sol +1 -1
- package/contracts/superfluid/SuperfluidToken.sol +1 -1
- package/contracts/test/MultiFlowApp.sol +1 -1
- package/contracts/test/TestGovernance.sol +1 -1
- package/contracts/test/TestToken.sol +1 -1
- package/contracts/tokens/FullUpgradableSuperTokenProxy.sol +1 -1
- package/contracts/tokens/MaticBridgedNativeSuperToken.sol +1 -1
- package/contracts/tokens/NativeSuperToken.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/TOGA.sol +1 -1
- package/contracts/utils/TokenCustodian.sol +1 -1
- package/contracts/ux/BaseRelayRecipient.sol +1 -1
- package/contracts/ux/Resolver.sol +1 -1
- package/contracts/ux/SuperUpgrader.sol +1 -1
- package/contracts/ux/SuperfluidLoader.sol +1 -1
- package/package.json +13 -5
- package/scripts/deploy-erc1820.js +16 -3
- package/scripts/deploy-framework.js +32 -11
- package/artifacts/ERC1820Registry.json +0 -5
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
## Usage
|
|
30
30
|
|
|
31
|
-
If you're building a dapp using existing protocol or Super Token contracts, then you should use [`@superfluid-finance/
|
|
31
|
+
If you're building a dapp using existing protocol or Super Token contracts, then you should use [`@superfluid-finance/sdk-core`](/packages/sdk-core). [Here](https://docs.superfluid.finance/superfluid/networks/networks) you can find a list of networks where the Superfluid protocol is already deployed.
|
|
32
32
|
|
|
33
33
|
If you're building a smart contract that uses Superfluid protocol, or even your own [SuperApp](https://docs.superfluid.finance/), then great! This is definitely the place to be.
|
|
34
34
|
|
|
@@ -81,8 +81,9 @@ contract("My Test", accounts => {
|
|
|
81
81
|
from: admin
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
|
+
}
|
|
84
85
|
```
|
|
85
|
-
In order to write concise testing code, we further recommend the use of [`@superfluid-finance/
|
|
86
|
+
In order to write concise testing code, we further recommend the use of [`@superfluid-finance/sdk-core`](/packages/sdk-core) not only in your UI code, but also in JS contract tests.
|
|
86
87
|
|
|
87
88
|
### Examples
|
|
88
89
|
|
|
@@ -163,53 +164,24 @@ yarn test
|
|
|
163
164
|
Run a specific test using the [exclusive tests](https://mochajs.org/#exclusive-tests) feature of MochaJS:
|
|
164
165
|
```sh
|
|
165
166
|
yarn pretest
|
|
166
|
-
npx
|
|
167
|
+
npx hardhat test test/contracts/agreements/ConstantFlowAgreementV1.test.js
|
|
167
168
|
yarn posttest
|
|
168
169
|
```
|
|
169
170
|
|
|
170
171
|
Run the test suite for core contracts:
|
|
171
172
|
```sh
|
|
172
|
-
|
|
173
|
-
npx truffle test testsuites/superfluid-core.js
|
|
174
|
-
yarn posttest
|
|
173
|
+
npx hardhat test testsuites/superfluid-core.js
|
|
175
174
|
```
|
|
176
175
|
|
|
177
176
|
The `pretest` script starts a ganache instance with deterministic accounts in the background, the `posttest` script stops it.
|
|
178
177
|
When running tests with `yarn test`, those get executed automatically (see [npm docs](https://docs.npmjs.com/cli/v7/using-npm/scripts#pre--post-scripts)).
|
|
178
|
+
> NOTE: You don't need to run the `pretest` and `posttest` scripts when running hardhat tests, but you do when running tests with truffle.
|
|
179
179
|
|
|
180
180
|
### TDD Session
|
|
181
181
|
|
|
182
182
|
When working on the contracts, a test driven approach is recommended.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
First, start ganache configured as needed in a terminal window:
|
|
186
|
-
```sh
|
|
187
|
-
yarn testenv:start
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
Then open another terminal window and continue there.
|
|
191
|
-
If you're not planning to modify core contracts, set an environment variable:
|
|
192
|
-
```sh
|
|
193
|
-
export TESTENV_SNAPSHOT_VARS=testenv.ignore.vars
|
|
194
|
-
```
|
|
195
|
-
This env variable will be used by the deploy script executed in the next step to persist a resolver address and a ganache snapshot id to the configured file.
|
|
196
|
-
Without this variable set, the protocol contracts will be re-deployed for every new test run, making the process considerably slower.
|
|
197
|
-
Note: if you want to modify core contracts, you **need** to have them re-deployed after every change, thus should **not** set this env variable.
|
|
198
|
-
|
|
199
|
-
Next, deploy a test environment:
|
|
200
|
-
```sh
|
|
201
|
-
yarn testenv:deploy
|
|
202
|
-
```
|
|
203
|
-
This will deploy the protocol contracts and a Super Token named _TEST_ (which is needed by many test cases).
|
|
204
|
-
If you have set the env `TESTENV_SNAPSHOT_VARS` before, the file it's set to should now exist and look something like this:
|
|
205
|
-
```sh
|
|
206
|
-
$ cat testenv.ignore.vars
|
|
207
|
-
RESOLVER_ADDRESS=0xF12b5dd4EAD5F743C6BaA640B0216200e89B60Da
|
|
208
|
-
TESTENV_EVM_SNAPSHOT_ID=0x1
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Next, you should choose the tests relevant for what you're working on using the [only keyword](https://mochajs.org/#exclusive-tests).
|
|
212
|
-
You can put the `only` keyword at any level between whole test suites (`only` appended to a top level `describe`) and individual testcases (`it`).
|
|
183
|
+
You should choose the tests relevant for what you're working on using the [only keyword](https://mochajs.org/#exclusive-tests).
|
|
184
|
+
You can put the `only` keyword at any level between whole test suites (`only` appended to a top level `describe`, e.g. `describe.only`) and individual testcases (`it`, e.g. `it.only`).
|
|
213
185
|
With the testing scope defined, run:
|
|
214
186
|
```
|
|
215
187
|
yarn dev
|
|
@@ -217,14 +189,14 @@ yarn dev
|
|
|
217
189
|
This has [testsuites/all-contracts.js](testsuites/all-contracts.js) as its entrypoint, but if there's an `only` keyword at any nesting level in any of the tests traversed, only that selected subset of tests will be executed.
|
|
218
190
|
The selected test(s) will run once when starting the session and re-run everytime you save changes in a relevant file.
|
|
219
191
|
|
|
220
|
-
After finishing the session, you can stop the
|
|
192
|
+
After finishing the session, you can stop the hardhat instance you started in the first step (Ctrl-C).
|
|
221
193
|
Also, don't forget to remove `only` keywords from test files before making git commits.
|
|
222
194
|
|
|
223
|
-
To generate jpeg image charts from the test output run first install these dependencies: numpy
|
|
195
|
+
To generate jpeg image charts from the test output run first install these dependencies: numpy, pandas, plotly and kaleido by running:
|
|
224
196
|
```
|
|
225
197
|
python3 -m pip install -U libraryName
|
|
226
198
|
```
|
|
227
|
-
After that is done
|
|
199
|
+
After that is done, just simply run the testDataToCharts script and put the folder containing the csv files as the first argument e.g
|
|
228
200
|
```
|
|
229
201
|
python3 testDataToCharts.py output
|
|
230
202
|
```
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"type": "function"
|
|
207
207
|
}
|
|
208
208
|
],
|
|
209
|
-
"metadata": "{\"compiler\":{\"version\":\"0.8.
|
|
209
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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": {},
|
|
@@ -7902,11 +7902,11 @@
|
|
|
7902
7902
|
},
|
|
7903
7903
|
"compiler": {
|
|
7904
7904
|
"name": "solc",
|
|
7905
|
-
"version": "0.8.
|
|
7905
|
+
"version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
|
|
7906
7906
|
},
|
|
7907
7907
|
"networks": {},
|
|
7908
7908
|
"schemaVersion": "3.4.4",
|
|
7909
|
-
"updatedAt": "2022-
|
|
7909
|
+
"updatedAt": "2022-04-07T10:25:44.088Z",
|
|
7910
7910
|
"devdoc": {
|
|
7911
7911
|
"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.",
|
|
7912
7912
|
"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.13+commit.abaa5c0e\"},\"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": {},
|
|
@@ -394,6 +394,7 @@
|
|
|
394
394
|
"nodeType": "ContractDefinition",
|
|
395
395
|
"nodes": [
|
|
396
396
|
{
|
|
397
|
+
"global": false,
|
|
397
398
|
"id": 322,
|
|
398
399
|
"libraryName": {
|
|
399
400
|
"id": 319,
|
|
@@ -1872,6 +1873,7 @@
|
|
|
1872
1873
|
"nodeType": "ContractDefinition",
|
|
1873
1874
|
"nodes": [
|
|
1874
1875
|
{
|
|
1876
|
+
"global": false,
|
|
1875
1877
|
"id": 322,
|
|
1876
1878
|
"libraryName": {
|
|
1877
1879
|
"id": 319,
|
|
@@ -3217,11 +3219,11 @@
|
|
|
3217
3219
|
},
|
|
3218
3220
|
"compiler": {
|
|
3219
3221
|
"name": "solc",
|
|
3220
|
-
"version": "0.8.
|
|
3222
|
+
"version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
|
|
3221
3223
|
},
|
|
3222
3224
|
"networks": {},
|
|
3223
3225
|
"schemaVersion": "3.4.4",
|
|
3224
|
-
"updatedAt": "2022-
|
|
3226
|
+
"updatedAt": "2022-04-07T10:25:44.091Z",
|
|
3225
3227
|
"devdoc": {
|
|
3226
3228
|
"details": "Extension of {AccessControl} that allows enumerating the members of each role.",
|
|
3227
3229
|
"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.13+commit.abaa5c0e\"},\"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": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093b6855a0cdb659a00fcfb006f357d80d93600bb5f6a81ef38dd14809e754da964736f6c634300080d0033",
|
|
6
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093b6855a0cdb659a00fcfb006f357d80d93600bb5f6a81ef38dd14809e754da964736f6c634300080d0033",
|
|
7
7
|
"immutableReferences": {},
|
|
8
8
|
"generatedSources": [],
|
|
9
9
|
"deployedGeneratedSources": [],
|
|
@@ -7919,11 +7919,11 @@
|
|
|
7919
7919
|
},
|
|
7920
7920
|
"compiler": {
|
|
7921
7921
|
"name": "solc",
|
|
7922
|
-
"version": "0.8.
|
|
7922
|
+
"version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
|
|
7923
7923
|
},
|
|
7924
7924
|
"networks": {},
|
|
7925
7925
|
"schemaVersion": "3.4.4",
|
|
7926
|
-
"updatedAt": "2022-
|
|
7926
|
+
"updatedAt": "2022-04-07T10:25:44.144Z",
|
|
7927
7927
|
"devdoc": {
|
|
7928
7928
|
"details": "Collection of functions related to the address type",
|
|
7929
7929
|
"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.13+commit.abaa5c0e\"},\"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\":\"0xe59fc8bbe728c574773b5d3a3e9cfb4e8f323e9a3c3267a82d36fb79921b9997\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0e21d969b3b996ab211eff83fa5bb7041614c0ac597c7479012c0fe625f4e15f\",\"dweb:/ipfs/QmWThBae9FCDgCAcco2bZicvsPq8vz5K1XW66hz3LXSK2V\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9189eaba9e856cc4932ea29eeaf4e89a09448dde13860591691ec122856fdc75\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7d5991b906bba706373f5bfe3c2c8789a7a45360a41eee50574272b393c4ab70\",\"dweb:/ipfs/QmVCXVnYA13vMNxa7rGzNB129sUXiGE1asuHdnEMEPVZsp\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]}},\"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.13;\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",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"literals": [
|
|
145
145
|
"solidity",
|
|
146
146
|
"0.8",
|
|
147
|
-
".
|
|
147
|
+
".13"
|
|
148
148
|
],
|
|
149
149
|
"nodeType": "PragmaDirective",
|
|
150
150
|
"src": "35:23:30"
|
|
@@ -167,10 +167,7 @@
|
|
|
167
167
|
"overloadedDeclarations": [],
|
|
168
168
|
"referencedDeclaration": 36413,
|
|
169
169
|
"src": "69:13:30",
|
|
170
|
-
"typeDescriptions": {
|
|
171
|
-
"typeIdentifier": "t_type$_t_contract$_UUPSProxiable_$36413_$",
|
|
172
|
-
"typeString": "type(contract UUPSProxiable)"
|
|
173
|
-
}
|
|
170
|
+
"typeDescriptions": {}
|
|
174
171
|
},
|
|
175
172
|
"nameLocation": "-1:-1:-1"
|
|
176
173
|
}
|
|
@@ -195,10 +192,7 @@
|
|
|
195
192
|
"overloadedDeclarations": [],
|
|
196
193
|
"referencedDeclaration": 16514,
|
|
197
194
|
"src": "137:15:30",
|
|
198
|
-
"typeDescriptions": {
|
|
199
|
-
"typeIdentifier": "t_type$_t_contract$_ISuperAgreement_$16514_$",
|
|
200
|
-
"typeString": "type(contract ISuperAgreement)"
|
|
201
|
-
}
|
|
195
|
+
"typeDescriptions": {}
|
|
202
196
|
},
|
|
203
197
|
"nameLocation": "-1:-1:-1"
|
|
204
198
|
}
|
|
@@ -821,7 +815,7 @@
|
|
|
821
815
|
"literals": [
|
|
822
816
|
"solidity",
|
|
823
817
|
"0.8",
|
|
824
|
-
".
|
|
818
|
+
".13"
|
|
825
819
|
],
|
|
826
820
|
"nodeType": "PragmaDirective",
|
|
827
821
|
"src": "35:23:30"
|
|
@@ -844,10 +838,7 @@
|
|
|
844
838
|
"overloadedDeclarations": [],
|
|
845
839
|
"referencedDeclaration": 36413,
|
|
846
840
|
"src": "69:13:30",
|
|
847
|
-
"typeDescriptions": {
|
|
848
|
-
"typeIdentifier": "t_type$_t_contract$_UUPSProxiable_$36413_$",
|
|
849
|
-
"typeString": "type(contract UUPSProxiable)"
|
|
850
|
-
}
|
|
841
|
+
"typeDescriptions": {}
|
|
851
842
|
},
|
|
852
843
|
"nameLocation": "-1:-1:-1"
|
|
853
844
|
}
|
|
@@ -872,10 +863,7 @@
|
|
|
872
863
|
"overloadedDeclarations": [],
|
|
873
864
|
"referencedDeclaration": 16514,
|
|
874
865
|
"src": "137:15:30",
|
|
875
|
-
"typeDescriptions": {
|
|
876
|
-
"typeIdentifier": "t_type$_t_contract$_ISuperAgreement_$16514_$",
|
|
877
|
-
"typeString": "type(contract ISuperAgreement)"
|
|
878
|
-
}
|
|
866
|
+
"typeDescriptions": {}
|
|
879
867
|
},
|
|
880
868
|
"nameLocation": "-1:-1:-1"
|
|
881
869
|
}
|
|
@@ -1478,11 +1466,11 @@
|
|
|
1478
1466
|
},
|
|
1479
1467
|
"compiler": {
|
|
1480
1468
|
"name": "solc",
|
|
1481
|
-
"version": "0.8.
|
|
1469
|
+
"version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
|
|
1482
1470
|
},
|
|
1483
1471
|
"networks": {},
|
|
1484
1472
|
"schemaVersion": "3.4.4",
|
|
1485
|
-
"updatedAt": "2022-
|
|
1473
|
+
"updatedAt": "2022-04-07T10:25:44.195Z",
|
|
1486
1474
|
"devdoc": {
|
|
1487
1475
|
"author": "Superfluid",
|
|
1488
1476
|
"kind": "dev",
|