Skip to content

Commit 2ed51dd

Browse files
authored
Merge pull request #503 from tablelandnetwork/dtb/add-base
feat: add base chain support
2 parents 89687b1 + 6b9034c commit 2ed51dd

File tree

5 files changed

+207
-0
lines changed

5 files changed

+207
-0
lines changed

.env.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ OPTIMISM_SEPOLIA_PRIVATE_KEY=0xfixme
1818
OPTIMISM_SEPOLIA_API_KEY=fixme
1919
ARBITRUM_SEPOLIA_PRIVATE_KEY=0xfixme
2020
ARBITRUM_SEPOLIA_API_KEY=fixme
21+
BASE_SEPOLIA_PRIVATE_KEY=0xfixme
22+
BASE_SEPOLIA_API_KEY=fixme
2123
POLYGON_AMOY_PRIVATE_KEY=0xfixme
2224
POLYGON_AMOY_API_KEY=fixme
2325
FILECOIN_CALIBRATION_PRIVATE_KEY=0xfixme
@@ -32,6 +34,7 @@ ETHERSCAN_API_KEY=fixme
3234
OPTIMISM_ETHERSCAN_API_KEY=fixme
3335
ARBISCAN_API_KEY=fixme
3436
ARBISCAN_NOVA_API_KEY=fixme
37+
BASESCAN_API_KEY=fixme
3538
POLYSCAN_API_KEY=fixme
3639
FILFOX_API_KEY=fixme
3740
# hardhat

.openzeppelin/base-sepolia.json

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
{
2+
"manifestVersion": "3.2",
3+
"proxies": [
4+
{
5+
"address": "0xA85aAE9f0Aec5F5638E5F13840797303Ab29c9f9",
6+
"txHash": "0x6e6051db7a495fccdd9efaf31e02145cb52150eb1c58d28035b343a0ba5691f0",
7+
"kind": "uups"
8+
}
9+
],
10+
"impls": {
11+
"f81fdad50c4628dce7f1a7ebf243ab81c2f61f18d2d7ff651bb95a932120d900": {
12+
"address": "0xf3A896bF78Ce6A4EF15f9a5B326F657B4221af07",
13+
"txHash": "0xb3dcfa0beb3e28cd7779282189990b7cce84c5ff6e3e1ea3651c698090eb19e8",
14+
"layout": {
15+
"solcVersion": "0.8.19",
16+
"storage": [
17+
{
18+
"label": "_initialized",
19+
"offset": 0,
20+
"slot": "0",
21+
"type": "t_uint8",
22+
"contract": "Initializable",
23+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63",
24+
"retypedFrom": "bool"
25+
},
26+
{
27+
"label": "_initializing",
28+
"offset": 1,
29+
"slot": "0",
30+
"type": "t_bool",
31+
"contract": "Initializable",
32+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68"
33+
},
34+
{
35+
"label": "__gap",
36+
"offset": 0,
37+
"slot": "1",
38+
"type": "t_array(t_uint256)50_storage",
39+
"contract": "ContextUpgradeable",
40+
"src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40"
41+
},
42+
{
43+
"label": "_owner",
44+
"offset": 0,
45+
"slot": "51",
46+
"type": "t_address",
47+
"contract": "OwnableUpgradeable",
48+
"src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22"
49+
},
50+
{
51+
"label": "__gap",
52+
"offset": 0,
53+
"slot": "52",
54+
"type": "t_array(t_uint256)49_storage",
55+
"contract": "OwnableUpgradeable",
56+
"src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94"
57+
},
58+
{
59+
"label": "_paused",
60+
"offset": 0,
61+
"slot": "101",
62+
"type": "t_bool",
63+
"contract": "PausableUpgradeable",
64+
"src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29"
65+
},
66+
{
67+
"label": "__gap",
68+
"offset": 0,
69+
"slot": "102",
70+
"type": "t_array(t_uint256)49_storage",
71+
"contract": "PausableUpgradeable",
72+
"src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116"
73+
},
74+
{
75+
"label": "_status",
76+
"offset": 0,
77+
"slot": "151",
78+
"type": "t_uint256",
79+
"contract": "ReentrancyGuardUpgradeable",
80+
"src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38"
81+
},
82+
{
83+
"label": "__gap",
84+
"offset": 0,
85+
"slot": "152",
86+
"type": "t_array(t_uint256)49_storage",
87+
"contract": "ReentrancyGuardUpgradeable",
88+
"src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88"
89+
},
90+
{
91+
"label": "__gap",
92+
"offset": 0,
93+
"slot": "201",
94+
"type": "t_array(t_uint256)50_storage",
95+
"contract": "ERC1967UpgradeUpgradeable",
96+
"src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169"
97+
},
98+
{
99+
"label": "__gap",
100+
"offset": 0,
101+
"slot": "251",
102+
"type": "t_array(t_uint256)50_storage",
103+
"contract": "UUPSUpgradeable",
104+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111"
105+
},
106+
{
107+
"label": "_baseURIString",
108+
"offset": 0,
109+
"slot": "301",
110+
"type": "t_string_storage",
111+
"contract": "TablelandTables",
112+
"src": "contracts/TablelandTables.sol:27"
113+
},
114+
{
115+
"label": "_controllers",
116+
"offset": 0,
117+
"slot": "302",
118+
"type": "t_mapping(t_uint256,t_address)",
119+
"contract": "TablelandTables",
120+
"src": "contracts/TablelandTables.sol:29"
121+
},
122+
{
123+
"label": "_locks",
124+
"offset": 0,
125+
"slot": "303",
126+
"type": "t_mapping(t_uint256,t_bool)",
127+
"contract": "TablelandTables",
128+
"src": "contracts/TablelandTables.sol:31"
129+
}
130+
],
131+
"types": {
132+
"t_address": {
133+
"label": "address",
134+
"numberOfBytes": "20"
135+
},
136+
"t_array(t_uint256)49_storage": {
137+
"label": "uint256[49]",
138+
"numberOfBytes": "1568"
139+
},
140+
"t_array(t_uint256)50_storage": {
141+
"label": "uint256[50]",
142+
"numberOfBytes": "1600"
143+
},
144+
"t_bool": {
145+
"label": "bool",
146+
"numberOfBytes": "1"
147+
},
148+
"t_mapping(t_uint256,t_address)": {
149+
"label": "mapping(uint256 => address)",
150+
"numberOfBytes": "32"
151+
},
152+
"t_mapping(t_uint256,t_bool)": {
153+
"label": "mapping(uint256 => bool)",
154+
"numberOfBytes": "32"
155+
},
156+
"t_string_storage": {
157+
"label": "string",
158+
"numberOfBytes": "32"
159+
},
160+
"t_uint256": {
161+
"label": "uint256",
162+
"numberOfBytes": "32"
163+
},
164+
"t_uint8": {
165+
"label": "uint8",
166+
"numberOfBytes": "1"
167+
}
168+
},
169+
"namespaces": {}
170+
}
171+
}
172+
}
173+
}

contracts/utils/TablelandDeployments.sol

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ library TablelandDeployments {
4545
// TablelandTables address on Arbitrum Sepolia.
4646
address internal constant ARBITRUM_SEPOLIA =
4747
0x223A74B8323914afDC3ff1e5005564dC17231d6e;
48+
// TablelandTables address on Base Sepolia.
49+
address internal constant BASE_SEPOLIA =
50+
0xA85aAE9f0Aec5F5638E5F13840797303Ab29c9f9;
4851
// TablelandTables address on Polygon Amoy.
4952
address internal constant POLYGON_AMOY =
5053
0x170fb206132b693e38adFc8727dCfa303546Cec1;
@@ -84,6 +87,8 @@ library TablelandDeployments {
8487
return TablelandTablesImpl(OPTIMISM_SEPOLIA);
8588
} else if (block.chainid == 421614) {
8689
return TablelandTablesImpl(ARBITRUM_SEPOLIA);
90+
} else if (block.chainid == 84532) {
91+
return TablelandTablesImpl(BASE_SEPOLIA);
8792
} else if (block.chainid == 80002) {
8893
return TablelandTablesImpl(POLYGON_AMOY);
8994
} else if (block.chainid == 314159) {
@@ -123,6 +128,8 @@ library TablelandDeployments {
123128
return "https://testnets.tableland.network/api/v1/";
124129
} else if (block.chainid == 421614) {
125130
return "https://testnets.tableland.network/api/v1/";
131+
} else if (block.chainid == 84532) {
132+
return "https://testnets.tableland.network/api/v1/";
126133
} else if (block.chainid == 80002) {
127134
return "https://testnets.tableland.network/api/v1/";
128135
} else if (block.chainid == 314159) {

hardhat.config.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ const config: HardhatUserConfig = {
6666
arbitrumNova: process.env.ARBISCAN_NOVA_API_KEY || "",
6767
arbitrumSepolia: process.env.ARBISCAN_API_KEY || "",
6868

69+
// base
70+
baseSepolia: process.env.BASESCAN_API_KEY || "",
71+
6972
// polygon
7073
polygon: process.env.POLYSCAN_API_KEY || "",
7174
polygonAmoy: process.env.POLYSCAN_API_KEY || "",
@@ -95,6 +98,14 @@ const config: HardhatUserConfig = {
9598
browserURL: "https://sepolia.arbiscan.io/",
9699
},
97100
},
101+
{
102+
network: "baseSepolia",
103+
chainId: 84532,
104+
urls: {
105+
apiURL: "https://api-sepolia.basescan.org/api",
106+
browserURL: "https://sepolia.basescan.org/",
107+
},
108+
},
98109
{
99110
network: "polygonAmoy",
100111
chainId: 80002,
@@ -182,6 +193,15 @@ const config: HardhatUserConfig = {
182193
? [process.env.ARBITRUM_SEPOLIA_PRIVATE_KEY]
183194
: [],
184195
},
196+
"base-sepolia": {
197+
url: `https://base-sepolia.g.alchemy.com/v2/${
198+
process.env.BASE_SEPOLIA_API_KEY ?? ""
199+
}`,
200+
accounts:
201+
process.env.BASE_SEPOLIA_PRIVATE_KEY !== undefined
202+
? [process.env.BASE_SEPOLIA_PRIVATE_KEY]
203+
: [],
204+
},
185205
"polygon-amoy": {
186206
url: `https://polygon-amoy.g.alchemy.com/v2/${
187207
process.env.POLYGON_AMOY_API_KEY ?? ""

network.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface TablelandNetworkConfig {
1111
sepolia: string | number;
1212
"optimism-sepolia": string | number;
1313
"arbitrum-sepolia": string | number;
14+
"base-sepolia": string | number;
1415
"polygon-amoy": string | number;
1516
"filecoin-calibration": string | number;
1617
// tableland testnet devnets (uncomment when needed for admin)
@@ -35,6 +36,7 @@ export const proxies: TablelandNetworkConfig = {
3536
sepolia: "0xc50C62498448ACc8dBdE43DA77f8D5D2E2c7597D",
3637
"optimism-sepolia": "0x68A2f4423ad3bf5139Db563CF3bC80aA09ed7079",
3738
"arbitrum-sepolia": "0x223A74B8323914afDC3ff1e5005564dC17231d6e",
39+
"base-sepolia": "0xA85aAE9f0Aec5F5638E5F13840797303Ab29c9f9",
3840
"polygon-amoy": "0x170fb206132b693e38adFc8727dCfa303546Cec1",
3941
"filecoin-calibration": "0x030BCf3D50cad04c2e57391B12740982A9308621",
4042
// devnets (uncomment when needed for admin)
@@ -63,6 +65,7 @@ export const baseURIs: TablelandNetworkConfig = {
6365
"https://testnets.tableland.network/api/v1/tables/11155420/",
6466
"arbitrum-sepolia":
6567
"https://testnets.tableland.network/api/v1/tables/421614/",
68+
"base-sepolia": "https://testnets.tableland.network/api/v1/tables/84532/",
6669
"polygon-amoy": "https://testnets.tableland.network/api/v1/tables/80002/",
6770
"filecoin-calibration":
6871
"https://testnets.tableland.network/api/v1/tables/314159/",
@@ -92,6 +95,7 @@ export const validatorPollingTimeouts: TablelandNetworkConfig = {
9295
sepolia: 40_000,
9396
"optimism-sepolia": 10_000,
9497
"arbitrum-sepolia": 10_000,
98+
"base-sepolia": 10_000,
9599
"polygon-amoy": 15_000,
96100
"filecoin-calibration": 210_000,
97101
// devnets (uncomment when needed for admin)

0 commit comments

Comments
 (0)