Skip to content

tablelandnetwork/evm-tableland

@tableland/evm

GitHub license Release standard-readme compliant Test

Tableland Tables EVM contracts and client components

Table of Contents

Background

This is the Tableland Tables EVM contracts and client components.

Currently supported chains

Chain Chain ID Contract
homestead 1 0x012969f7e3439a9B04025b5a049EB9BAD82A8C12
optimism 10 0xfad44BF5B843dE943a09D4f3E84949A11d3aa3e6
arbitrum 42161 0x9aBd75E8640871A5a20d3B4eE6330a04c962aFfd
arbitrum-nova 42170 0x1A22854c5b1642760a827f20137a67930AE108d2
polygon 137 0x5c4e6A9e5C1e1BF445A062006faF19EA6c49aFeA
filecoin 314 0x59EF8Bf2d6c102B4c42AEf9189e1a9F0ABfD652d
sepolia 11155111 0xc50C62498448ACc8dBdE43DA77f8D5D2E2c7597D
optimism-sepolia 11155420 0x68A2f4423ad3bf5139Db563CF3bC80aA09ed7079
arbitrum-sepolia 421614 0x223A74B8323914afDC3ff1e5005564dC17231d6e
polygon-amoy 80002 0x170fb206132b693e38adFc8727dCfa303546Cec1
filecoin-calibration 314159 0x030BCf3D50cad04c2e57391B12740982A9308621

Development

Building the client

You can build the Typescript client locally:

npm install
npx hardhat compile
npm run build

Testing

Run the test suite:

npm test

Test with gas reporting:

REPORT_GAS=true npx hardhat test

Deploying

Deployments are handled on a per-network basis:

npx hardhat run scripts/deploy.ts --network optimism

Network names may include context for the target Tableland network:

npx hardhat run scripts/deploy.ts --network optimism-goerli-staging

Where optimism-goerli-staging indicates a deployment to the Optimism Goerli testnet for the Tableland staging network.

Refer to proxies in network.ts for the list of current deployments.

Upgrading

The Tableland contracts are currently upgradeable at this early stage of development. Upgrades are handled much like deployments:

npx hardhat run scripts/upgrade.ts --network optimism

Upgrading on a network only works if a previous deployment already exists, referenced by proxy address in network.ts.

Extracting the ABI and Bytecode

You can grab the assets you need by compiling and then using some jq magic:

ABI

cat artifacts/contracts/TablelandTables.sol/TablelandTables.json | jq '.abi' > abi.json

Bytecode

cat artifacts/contracts/TablelandTables.sol/TablelandTables.json | jq -r '.bytecode' > bytecode.bin

Generate the Go client!

You can use the above abi.json to build the Go client:

mkdir gobuild
abigen --abi ./abi.json --bin ./bytecode.bin --pkg contracts --out gobuild/Registry.go

Etherscan verification

To perform Etherscan verification, you first need to deploy a contract to an Ethereum network that's supported by Etherscan, such as Sepolia:

npx hardhat run scripts/deploy.ts --network ethereum-sepolia

Then, copy the deployment address and paste it in to replace DEPLOYED_CONTRACT_ADDRESS in this command:

npx hardhat verify DEPLOYED_CONTRACT_ADDRESS --network ethereum-sepolia

Speedier tests

For faster runs of your tests and scripts, consider skipping ts-node's type checking by setting the environment variable TS_NODE_TRANSPILE_ONLY to 1 in hardhat's environment. For more details see the documentation.

Contributing

PRs accepted.

Small note: If editing the README, please conform to the standard-readme specification.

License

MIT AND Apache-2.0, © 2021-2022 Tableland Network Contributors