Skip to content

Commit 7d10bf0

Browse files
committed
feat(tokenizer): allow erc20 attachment as ipt
- drops stoneage Synthesizer - extracts IIPToken interface to be reused on Tokenizer and Permissioner - fixes linearization of dependencies on IPToken - adds general erc20 metadata fields to shared IPT interface - wrapping test case - rollout script and disable fork test - drops size checks on builds - add sanity checks for ipt attachment on tokenizer
1 parent 0cc9189 commit 7d10bf0

41 files changed

Lines changed: 1169 additions & 502 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ jobs:
2525
- name: Install node dependencies
2626
run: yarn --frozen-lockfile
2727

28+
#todo: forge build --sizes
2829
- name: Run Forge build
2930
run: |
3031
forge --version
31-
forge build --sizes
32+
forge build
3233
id: build
3334

3435
- name: Run Forge tests

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,12 @@ VDAO_TOKEN_ADDRESS=0x19A3036b828bffB5E14da2659E950E76f8e6BAA2
100100

101101
---
102102

103-
### upgrading to Tokenizer 1.3
103+
### upgrading to Tokenizer 1.4
104104

105-
forge script --private-key=$PRIVATE_KEY --rpc-url=$RPC_URL script/prod/RolloutTokenizerV13.s.sol --broadcast
105+
forge script --private-key=$PRIVATE_KEY --rpc-url=$RPC_URL script/prod/RolloutTokenizerV14.s.sol --broadcast
106106

107-
// 0xTokenizer 0xNewImpl 0xNewTokenImpl
108-
cast send --rpc-url=$RPC_URL --private-key=$PRIVATE_KEY 0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e "upgradeToAndCall(address,bytes)" 0x70e0bA845a1A0F2DA3359C97E0285013525FFC49 0x84646c1f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e
107+
// 0xTokenizer (address, bytes)(0xNewImpl, 0xNewWrappedIPTokenImpl 0xNewIPTokenImpl)
108+
cast send --rpc-url=$RPC_URL --private-key=$PRIVATE_KEY 0x58EB89C69CB389DBef0c130C6296ee271b82f436 "upgradeToAndCall(address,bytes)" 0x34A1D3fff3958843C43aD80F30b94c510645C316 0x8b3d19bb0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005b73c5498c1e3b4dba84de0f1833c4a029d90519
109109

110110
### Timelocked Tokens
111111

script/DeployShareDistributor.s.sol

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,7 @@ contract DeployShareDistributor is Script {
1616

1717
SalesShareDistributor impl = new SalesShareDistributor();
1818

19-
SalesShareDistributor salesShareDistributor = SalesShareDistributor(
20-
address(
21-
new ERC1967Proxy(
22-
address(impl), ""
23-
)
24-
)
25-
);
19+
SalesShareDistributor salesShareDistributor = SalesShareDistributor(address(new ERC1967Proxy(address(impl), "")));
2620
salesShareDistributor.initialize(SchmackoSwap(sosAddress));
2721
vm.stopBroadcast();
2822

script/IPNFT.s.sol

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,7 @@ import "../src/IPNFT.sol";
99
contract Deploy is Script {
1010
function run() public {
1111
vm.startBroadcast();
12-
IPNFT ipnft = IPNFT(
13-
address(
14-
new ERC1967Proxy(address(new IPNFT()),
15-
abi.encodeWithSelector(IPNFT.initialize.selector, ""))
16-
)
17-
);
12+
IPNFT ipnft = IPNFT(address(new ERC1967Proxy(address(new IPNFT()), abi.encodeWithSelector(IPNFT.initialize.selector, ""))));
1813
vm.stopBroadcast();
1914

2015
console.log("IPNFT_ADDRESS=%s", address(ipnft));

script/dev/CrowdSale.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ contract DeployStakedCrowdSale is CommonScript {
3737
vm.startBroadcast(deployer);
3838
TimelockedToken lockingCrowdsaleImplementation = new TimelockedToken();
3939
StakedLockingCrowdSale stakedLockingCrowdSale = new StakedLockingCrowdSale(lockingCrowdsaleImplementation);
40-
40+
4141
TokenVesting vestedDaoToken = TokenVesting(vm.envAddress("VDAO_TOKEN_ADDRESS"));
4242
vestedDaoToken.grantRole(vestedDaoToken.ROLE_CREATE_SCHEDULE(), address(stakedLockingCrowdSale));
4343
stakedLockingCrowdSale.trustVestingContract(vestedDaoToken);

script/dev/Ipnft.s.sol

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,7 @@ contract DeployIpnftSuite is CommonScript {
2424
function run() public {
2525
prepareAddresses();
2626
vm.startBroadcast(deployer);
27-
IPNFT ipnft = IPNFT(
28-
address(
29-
new ERC1967Proxy(address(new IPNFT()),
30-
abi.encodeWithSelector(IPNFT.initialize.selector, ""))
31-
)
32-
);
27+
IPNFT ipnft = IPNFT(address(new ERC1967Proxy(address(new IPNFT()), abi.encodeWithSelector(IPNFT.initialize.selector, ""))));
3328

3429
SchmackoSwap swap = new SchmackoSwap();
3530

script/dev/Synthesizer.s.sol

Lines changed: 0 additions & 100 deletions
This file was deleted.

script/dev/Tokenizer.s.sol

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import "forge-std/Script.sol";
55
import "forge-std/console.sol";
66
import { IPNFT } from "../../src/IPNFT.sol";
77
import { Tokenizer } from "../../src/Tokenizer.sol";
8-
import { Metadata, IPToken } from "../../src/IPToken.sol";
8+
import { Metadata } from "../../src/IIPToken.sol";
9+
import { IPToken } from "../../src/IPToken.sol";
10+
import { WrappedIPToken } from "../../src/WrappedIPToken.sol";
11+
912
import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
1013
import { IPermissioner, TermsAcceptedPermissioner } from "../../src/Permissioner.sol";
1114
import { CommonScript } from "./Common.sol";
@@ -23,9 +26,13 @@ contract DeployTokenizer is CommonScript {
2326
IPToken initialIpTokenImplementation = new IPToken();
2427
tokenizer.setIPTokenImplementation(initialIpTokenImplementation);
2528

29+
WrappedIPToken initialWrappedIpTokenImplementation = new WrappedIPToken();
30+
tokenizer.setWrappedIPTokenImplementation(initialWrappedIpTokenImplementation);
31+
2632
vm.stopBroadcast();
2733
console.log("TOKENIZER_ADDRESS=%s", address(tokenizer));
2834
console.log("iptoken implementation=%s", address(initialIpTokenImplementation));
35+
console.log("wrapped iptoken implementation=%s", address(initialWrappedIpTokenImplementation));
2936
}
3037
}
3138

script/prod/RolloutTokenizerV13.s.sol

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.18;
3+
4+
import "forge-std/Script.sol";
5+
import { Tokenizer } from "../../src/Tokenizer.sol";
6+
import { IPToken } from "../../src/IPToken.sol";
7+
import { WrappedIPToken } from "../../src/WrappedIPToken.sol";
8+
import { console } from "forge-std/console.sol";
9+
10+
contract RolloutTokenizerV14 is Script {
11+
function run() public {
12+
vm.startBroadcast();
13+
14+
// Deploy new implementations
15+
IPToken ipTokenImplementation = new IPToken();
16+
WrappedIPToken wrappedIpTokenImplementation = new WrappedIPToken();
17+
Tokenizer newTokenizerImplementation = new Tokenizer();
18+
19+
// Prepare upgrade call data using reinit function
20+
bytes memory upgradeCallData =
21+
abi.encodeWithSelector(Tokenizer.reinit.selector, address(wrappedIpTokenImplementation), address(ipTokenImplementation));
22+
23+
console.log("IPTOKENIMPLEMENTATION=%s", address(ipTokenImplementation));
24+
console.log("WRAPPEDTOKENIMPLEMENTATION=%s", address(wrappedIpTokenImplementation));
25+
console.log("NEWTOKENIZER=%s", address(newTokenizerImplementation));
26+
console.log("UpgradeCallData:");
27+
console.logBytes(upgradeCallData);
28+
29+
vm.stopBroadcast();
30+
}
31+
}

0 commit comments

Comments
 (0)