GithubHelp home page GithubHelp logo

cruzo-contracts's Introduction

Cruzo Contracts

Contracts

  • Cruzo1155
  • CruzoMarket
  • Factory
  • CruzoGift
  • CruzoAirdrop
  • CruzoPassSale

Networks

Blockchain Network Name
Ethereum mainnet ethMainnet
Ethereum testnet ethGoerli
Binance mainnet bscMainnet
Binance testnet bscTestnet
Polygon mainnet polygonMainnet
Polygon testnet polygonMumbai
Cronos mainnet cronosMainnetBeta
Cronos testnet cronosTestnet
Avalanche mainnet avaxMainnet
Avalanche testnet avaxFuji
Moonbeam mainnet moonbeam
Moonbeam testnet moonbaseAlpha
Boba mainnet bobaMainnet
Boba testnet bobaRinkeby
BitTorrent mainnet bitTorrentMainnet
BitTorrent testnet bitTorrentDonau
XDC mainnet xdcMainnet
XDC testnet xdcApothem
Lukso testnet l16Testnet
Evmos testnet evmosTestnet
Cube mainnet cubeMainnet
Cube testnet cubeTestnet
Klaytn mainnet klaytnMainnet
Klaytn testnet klaytnTestnet

Configuration

  • ADDRESS_MAPPING_FILENAME should point to environment specific JSON file

Scripts

Compile

yarn compile

Generate typings

yarn typegen

Run tests

yarn test

Lint

yarn lint

Deploy

yarn deployTransferProxy --network <network>
yarn deployMarket --network <network>
yarn deployGift --network <network>
yarn deployAirdrop --network <network>
yarn setTransferProxyOperators --network <network>

yarn deployBeacon --network <network>
yarn deployFactory --network <network>
yarn deployToken --network <network>

Export ABI

yarn abi

Verify contract

yarn verify --contract <contract source:contract name> --network <network> <contract> [<arg1> <arg2> ...]

Verify TransferProxy

yarn verify --network <network> --contract contracts/transfer-proxy/TransferProxy.sol:TransferProxy <address>

Verify Market

yarn verify --network <network> --contract contracts/marketplace/CruzoMarket.sol:CruzoMarket <address>

Verify Factory

yarn verify --network <network> --contract contracts/factory/Cruzo1155Factory.sol:Cruzo1155Factory <address> <beaconAddress> <transferProxyAddress>

Verify Token

TBD

Verify Gift

yarn verify --network <network> --contract contracts/gift/CruzoGift.sol:CruzoGift <address>

Verify Airdrop

yarn verify --network <network> --contract contracts/airdrop/CruzoAirdrop.sol:CruzoAirdrop <address>

Verify Pass Sale

yarn verify --network <network> --contract contracts/pass-sale/CruzoPassSale.sol:CruzoPassSale --constructor-args data/pass-sale/verify-args.js <address>

Upgrades, Proxy approach

We use UUPS proxy pattern for TransferProxy, CruzoMarket, CruzoGift, CruzoAirdrop contracts and BeaconProxy for instances of Cruzo1155 contracts.

Requires: openzeppelin/hardhat-upgrades

Simple rules to upgrade contract:

  1. Don't forget to implement upgrade method inside implementation(_authorizeUpgrade)(for UUPS proxy pattern).
  2. Append new variables to the end of the variables list.
  3. Don't delete old variables.

In code

Deploy UUPS proxy:

upgrades.deployProxy(ContractFactory, [contructor args], { kind : "uups" })

Update UUPS proxy:

upgrades.upgradeProxy(address of old impl, newContractFactory)

Deploy Beacon proxy:

await upgrades.deployBeacon(TokenFactory)

Update Beacon proxy:

await upgrades.upgradeBeacon(beaconAddress, newTokenFactory)

Through command line

yarn upgradeMarket --network <network>
yarn upgradeBeacon --network <network>
yarn upgradeGift --network <network>
yarn upgradeAirdrop --network <network>
yarn upgradeTransferProxy --network <network>

NFT Pass

Generate contractURI and baseURI

# open https://nft.storage/manage/ to get a token
$ NFTSTORAGE_TOKEN=<token> yarn run ts-node scripts/pass-sale/generate-uris.ts

Generate Signatures

data/pass-sale/addresses.json

data/pass-sale/signatures.json

$ SIGNER_KEY=<key> yarn run ts-node scripts/pass-sale/sign.ts

Deploy

# make sure you deploy these contracts before
# yarn deployBeacon --network <network>
# yarn deployMarket --network <network>
# yarn deployFactory --network <network>

$ SIGNER_ADDRESS=<address> REWARDS_ADDRESS=<address> yarn deployPassSale --network <network>

cruzo-contracts's People

Contributors

bobrom avatar kewka avatar incrypto32 avatar sunriseinmyeyes avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.