Skip to content

hivexx/Lighthouse-cli

 
 

Repository files navigation

Lighthouse

Lighthouse is a powerful command line interface tool designed to facilitate the interaction with Non-Fungible Tokens (NFTs) on the SEI blockchain. It allows users to easily update and deploy NFT collections.

Features

  • Deploy NFT collections with royalty option
  • Update NFT collections
  • Freeze/Unfreeze trading of NFT collections
  • Reveal metadata of NFT collections
  • View NFT collections
  • Mint NFTs
  • Generate merkle root for allowlists
  • Generate merkle proof for a wallet
  • Upload metadata and image files to upload to arweave

Installion

From your command line:

# Install lighthouse globally
$ npm install -g @we-bump/lighthouse-cli

# Run the app
$ lighthouse

Compile Source Code

From your command line:

# Clone this repository 
$ git clone https://github.com/We-Bump/Lighthouse-cli

# Go into the repository
$ cd Lighthouse-cli

# Install dependencies
$ npm install

# Install ts-node globally
$ npm install -g ts-node

# Run the app
$ ts-node lightouse.ts

Usage

init

Init a new project configuration. It will ask you several questions about your project (name, symbol, total supply, etc.) and generate a configuration file (config.json) based on your answers.

$ lighthouse init

load-wallet

Load a wallet with mnemonic keyphrase or private key to use in cli.

$ lighthouse load-wallet

load-rpc

Load rpc to use in cli.

$ lighthouse load-rpc

load-network

Select network to use in cli.

$ lighthouse load-network

deploy

Deploy a new NFT collection based on (config.json) .

$ lighthouse deploy
options

If you have already deployed a CW2981 contract and not registerd it to Lighthouse, you can register it using the --code option.

--code <code-id>

update <collection>

Update the configuration of an existing NFT collection. You need to provide the name of the collection as a command argument.

$ lighthouse update <collection-address>

unfreeze

Unfreeze trading of a collection.

$ lighthouse unfreeze <collection-address>

update-hidden-metadata

Update placeholder metadata of hidden frozen collection

$ lighthouse update-hidden-metadata <collection-address> <placeholder-token-uri>

reveal

Reveal metadata of a collection

$ lighthouse reveal <collection-address>

update-admin

Update admin of a collection

$ lighthouse update-admin <collection-address> <new-admin>

renounce-collection

Renounce collection and make it never updatable again

$ lighthouse renounce-collection <collection-address>

view

View configuration of a deployed NFT collection.

$ lighthouse view <collection-address>

mint

Mint single nft on a deployed NFT collection.

$ lighthouse mint <collection-address> <group_name>

generate-merkle-root

Generate a merkle root for allowlists.

$ lighthouse generate-merkle-root <path-to-wallets-json-file>

generate-merkle-proof

Generate merkle proof for a walet.

$ lighthouse generate-merkle-root <path-to-wallets-json-file> <publickey>

ownerof

Get owner(s) of specific token ids.

$ lighthouse ownerof <collection-address> <token-ids>

minterof

Get the minter of token(s)

$ lighthouse minterof <collection-address> <token-ids>

mintersof

Get all minters of a collection

$ lighthouse mintersof <collection-address>

snapshot

Snapshot holders of a collection

$ lighthouse snapshot <collection-address>
options

Exclude contract addresses

--exclude-contracts

Output file name

--output <file>

Output how many tokens each holder owns

--count

validate

Validate metadata and image files to upload to arweave. (metadata files must be in ./assets folder)

$ lighthouse validate

upload

Upload metadata and image files to upload to arweave. (metadata files must be in ./assets folder)

$ lighthouse upload
options

Path to Arweave wallet

--wallet <wallet>

Arweave node url optional (default https://arweave.net)

--url <url>

Configuration

Lighthouse relies on a config.json file for configuration of NFT collections. If the file does not exist, the CLI will automatically guide you through creating a default one.

{
  "mnemonic": "your mnemonic keyphrase",
  "rpc": "rpc url",
  "network": "atlantic-2",
  "name": "collection-name",
  "symbol": "collection-symbol",
  "description": "",
  "supply": 1000,
  "token_uri": "",
  "royalty_percent": 5,
  "royalty_wallet": "royalty-wallet-address",
  "iterated_uri":true,
  "start_order": 1,
  "frozen": false,
  "hidden_metadata": false,
  "placeholder_token_uri": "",
  "groups": [
    {
      "name": "whitelist",
      "merkle_root": "dcd038eeec4c67d44de097df2d773179fa811948a2e391f9784f6823a29c4a9f",
      "max_tokens": 3,
      "unit_price": 0.5,
      "creators": [
          {
              "address": "creator-wallet-address",
              "share": 100
          }
      ],
      "start_time": "2023-05-30T08:00:00Z",
      "end_time": "2023-05-30T09:00:00Z"
    },
    {
      "name": "public",
      "merkle_root": null,
      "max_tokens": 10,
      "unit_price": 1,
      "creators": [
          {
              "address": "creator-wallet-address",
              "share": 100
          }
      ],
      "start_time": "2023-05-30T09:00:00Z",
      "end_time": null
    }
  ]
}

mnemonic - memonic keyphrase to use in the Lighthouse

private_key - private key to use in the Lighthouse. (mnemonic or private key must be provided)

rpc - rpc url of the blockchain

network - network name

name - name of the collection

symbol - symbol of the collection

supply - supply of the collection

token_uri - base token url of the collection

token url is used for giving every nft a metadata url. nft urls are determined like this: {token_uri}/{nft_token_id}

royalty_percent - royalty percent on every sale

royalty_wallet - wallet to receive royalty

iterated_uri - should disable token_uri generate for iterated urls or not (eg: {token_uri}/1, {token_uri}/2, ...) (if set to true every nft will have same metadata url and if set to false every nft will have different metadata url)

start_order - start token id of the collection (default: 0)

frozen - should the trading be frozen or not (default: false) (can only freezed while deploying and can't be freezed after deployed)

hidden_metadata - should the metadata be hidden and replaced with "placeholder_token_uri" or not (default: false) (can only be hidden while deploying and can't be hidden after deployed)

placeholder_token_uri - placeholder token url to use for every nft's metadata if "hidden_metadata" is set to true

groups - array of mint groups

group options

name - group name

merkle_root - merkle root to restrict minting to only allowlisted wallets

max_tokens - max mint per wallet

unit_price - mint price

creators - array of creators and their share in mint funds (total share must be 100)

start_time - start time of minting to start for the group (utc)

end_time - end time of mint (utc)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Note

While minting, minters have to pay 1.5 $SEI for Lighthouse platform fee on every minted nft. (if mint is free, no fee will be charged)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 100.0%