Skip to content

Commit

Permalink
[automations] Vesting Scheduler V2 ergonomic improvements (#1904)
Browse files Browse the repository at this point in the history
* allow creation and execution of the vesting schedule in the current block

* add createVestingSchedule function which works with totalAmount and totalDuration

* add overloads without ctx

* need to improve testing coverage

* add more overloads with fewer parameters

* reorganize the functions

* add create and execute schedule mvp

* work in progress, needs proper testing

* remove try-catch from early end

* prefer reverting the early end until stream can be closed without needing the transfer (i.e. it will slightly overflow in that case)

* add dust amount fix (wip)

* needs proper test cover
* consider the log events

* rename from dustFixAmount to remainderAmount

* add to log as well

* fix test issues

* tiny comment rename

* remove functions create and execute functions with cliff period

* add a comprehensive fuzzed test for createScheduleFromAmountAndDuration

* slightly change end compensation & remainder handling

* use greater or equal handling for case when only remainder needs to be transferred
* assert transferFrom success result
* add todo-s, improve tests

* keep V1 contract, separate V2 explicitly

* update deploy script for v2

* unify deploy scripts

* use newer host.registerApp & unify deploy scripts

- add base-mainnet option

* clean-up

* add diff generation script & completely revert VestingScheduler.sol
  • Loading branch information
kasparkallas authored Jun 10, 2024
1 parent 547ba49 commit d416f90
Show file tree
Hide file tree
Showing 19 changed files with 2,009 additions and 57 deletions.
9 changes: 0 additions & 9 deletions packages/automation-contracts/autowrap/.env-example

This file was deleted.

11 changes: 11 additions & 0 deletions packages/automation-contracts/autowrap/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# .env-example

PRIVATE_KEY=

MUMBAI_URL=
POLYGON_URL=
BSC_URL=
OPSEPOLIA_URL=
BASE_URL=https://mainnet.base.org

ETHERSCAN_API_KEY=
46 changes: 41 additions & 5 deletions packages/automation-contracts/autowrap/hardhat.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ module.exports = {
optimizer: {
enabled: true,
runs: 200,
}
}
},
},
},
networks: {
localhost: {
Expand All @@ -29,21 +29,57 @@ module.exports = {
polygon: {
url: process.env.POLYGON_URL || "",
accounts:
process.env.POLYGON_PRIVATE_KEY !== undefined ? [process.env.POLYGON_PRIVATE_KEY] : [],
process.env.PRIVATE_KEY !== undefined
? [process.env.PRIVATE_KEY]
: [],
},
bsc: {
url: process.env.BSC_URL || "",
accounts:
process.env.BSC_PRIVATE_KEY !== undefined ? [process.env.BSC_PRIVATE_KEY] : [],
process.env.PRIVATE_KEY !== undefined
? [process.env.PRIVATE_KEY]
: [],
},
opsepolia: {
url: process.env.OPSEPOLIA_URL || "",
accounts:
process.env.PRIVATE_KEY !== undefined
? [process.env.PRIVATE_KEY]
: [],
},
"base-mainnet": {
url: process.env.BASE_URL || "",
accounts:
process.env.PRIVATE_KEY !== undefined
? [process.env.PRIVATE_KEY]
: [],
gasPrice: 1000000000
},
},

namedAccounts: {
deployer: {
default: 0,
},
},
etherscan: {
apiKey: process.env.ETHERSCAN_API_KEY,
customChains: [
{
network: "opsepolia",
chainId: 11155420,
urls: {
apiURL: "https://api-sepolia-optimistic.etherscan.io/api",
browserURL: "https://sepolia-optimism.etherscan.io/",
},
},
{
network: "base-mainnet",
chainId: 8453,
urls: {
apiURL: "https://api.basescan.org/api",
browserURL: "https://basescan.org/",
},
},
],
},
};
1 change: 1 addition & 0 deletions packages/automation-contracts/autowrap/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"scripts": {
"test": "forge test",
"build": "forge build",
"deploy": "npx hardhat deploy --network",
"lint": "run-s lint:*",
"lint:sol": "solhint -w 0 contracts/*.sol contracts/*/*.sol && echo '✔ Your .sol files look good.'",
"pre-commit": "if [ ! -z \"$(git status -s .)\" ];then run-s pre-commit:*;else true;fi",
Expand Down
9 changes: 0 additions & 9 deletions packages/automation-contracts/scheduler/.env-example

This file was deleted.

15 changes: 15 additions & 0 deletions packages/automation-contracts/scheduler/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# .env-example

PRIVATE_KEY=

MUMBAI_URL=
POLYGON_URL=
BSC_URL=
OPSEPOLIA_URL=
BASE_URL=https://mainnet.base.org

ETHERSCAN_API_KEY=

DEPLOY_FLOW_SCHEDULER=
DEPLOY_VESTING_SCHEDULER=
DEPLOY_VESTING_SCHEDULER_V2=
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

git diff -U9999 --no-index --minimal --ignore-cr-at-eol --ignore-space-at-eol ./../contracts/interface/IVestingScheduler.sol ./../contracts/interface/IVestingSchedulerV2.sol > diff_IVestingScheduler_vs_IVestingSchedulerV2.txt
git diff -U9999 --no-index --minimal --ignore-cr-at-eol --ignore-space-at-eol ./../contracts/VestingScheduler.sol ./../contracts/VestingSchedulerV2.sol > diff_VestingScheduler_vs_VestingSchedulerV2.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ contract FlowScheduler is IFlowScheduler, SuperAppBase {
using CFAv1Library for CFAv1Library.InitData;
CFAv1Library.InitData public cfaV1; //initialize cfaV1 variable

constructor(ISuperfluid host, string memory registrationKey) {
constructor(ISuperfluid host) {
// Initialize CFA Library
cfaV1 = CFAv1Library.InitData(
host,
Expand All @@ -40,7 +40,7 @@ contract FlowScheduler is IFlowScheduler, SuperAppBase {
SuperAppDefinitions.AFTER_AGREEMENT_UPDATED_NOOP |
SuperAppDefinitions.BEFORE_AGREEMENT_TERMINATED_NOOP |
SuperAppDefinitions.AFTER_AGREEMENT_TERMINATED_NOOP;
host.registerAppWithKey(configWord, registrationKey);
host.registerApp(configWord);
}

/// @dev IFlowScheduler.createFlowSchedule implementation.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,4 +254,4 @@ contract VestingScheduler is IVestingScheduler, SuperAppBase {
(,int96 flowRate,,) = cfaV1.cfa.getFlow(superToken, sender, receiver);
return flowRate != 0;
}
}
}
Loading

0 comments on commit d416f90

Please sign in to comment.