Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bisonai/sbt-contracts
Solidity smart contracts, deployment and test scripts for Soulbound token (SBT)
https://github.com/bisonai/sbt-contracts
ethereum klaytn nft sbt soulbound soulbound-tokens
Last synced: 30 days ago
JSON representation
Solidity smart contracts, deployment and test scripts for Soulbound token (SBT)
- Host: GitHub
- URL: https://github.com/bisonai/sbt-contracts
- Owner: Bisonai
- License: apache-2.0
- Created: 2022-09-27T05:20:41.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T05:58:48.000Z (almost 2 years ago)
- Last Synced: 2024-10-12T15:54:41.945Z (2 months ago)
- Topics: ethereum, klaytn, nft, sbt, soulbound, soulbound-tokens
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@bisonai/sbt-contracts
- Size: 162 KB
- Stars: 34
- Watchers: 6
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-klaytn - Contract repository
README
# @bisonai/sbt-contracts
This repository defines Solidity smart contracts, deployment, and test scripts for Soulbound token (SBT). The implementation follows [EIP-5192: Minimal Soulbound NFT](https://eips.ethereum.org/EIPS/eip-5192).
## Installation
```
yarn install
```## Prerequisites
1. Generate mnemonic if you do not have any.
```
npx mnemonics
```2. Create `.env` from `.env.example`.
```
cp .env.example .env
```3. Fill in generated mnemonic to `MNEMONIC` environment variable.
## Compilation
```
yarn compile
```## Predefined networks
`hardhat.config.ts` predefines several networks where SBT can be deployed.
Currently, you can deploy your SBT to `localhost`, `baobab` or `cypress` networks.
If you want to deploy to any other network, simply add connection information to `hardhat.config.ts`.## Deploy SBT
To deploy your SBT call `yarn deploy` command and set options `--base-uri`, `--name` and `--symbol`.
If you want to deploy to specific network you can define it using `--network` option.
To find more information about networks, go to [Predefined networks](#predefined-networks) section.```
Hardhat version 2.10.1Usage: hardhat [GLOBAL OPTIONS] deploy --base-uri --name --symbol
OPTIONS:
--base-uri URI (must end with /) that will be used as prefix when returning tokenURI
--name SBT name
--symbol SBT symboldeploy: Deploy SBT
For global options help run: hardhat help
```### Example of deploying SBT in localhost network
```
yarn deploy \
--name MySBT \
--symbol MSBT \
--base-uri "http://localhost/" \
--network localhost
```### Output
```
SBT was deployed to localhost network and can be interacted with at address 0xd65C849d9ADf21bc83cD8dEC377C4f0181dEcE6B
```## Mint SBT
When minting SBT, specify address of deployed SBT with `--address` option, address that will receive SBT token with `--to` option and ID of token with `--token-id` option.
Do not forget that single account can hold only single SBT token and that ID of every token is unique and cannot be reused.
After SBT token is minted to a specified account, it cannot be transferred to any other one.```
Hardhat version 2.10.1Usage: hardhat [GLOBAL OPTIONS] mint --address --to --token-id
OPTIONS:
--address Address of deployed SBT
--to Address receiving SBT token
--token-id ID of SBT token that is being mintedmint: Mint SBT
For global options help run: hardhat help
```### Example of minting SBT in localhost network
```
yarn mint \
--address 0xd65C849d9ADf21bc83cD8dEC377C4f0181dEcE6B \
--to 0xeaeF3D4964F40924D3082CFcB6F7E1d9Fe5D299B \
--token-id 123 \
--network localhost
```### Output
```
SBT with tokenId 123 was minted for address 0xeaeF3D4964F40924D3082CFcB6F7E1d9Fe5D299B
```## Run test
Before running test, make sure you compile your smart contracts.
```
yarn test
```## Publish to registry
```
yarn clean
yarn compile
yarn build
yarn pub
```## License
[Apache License 2.0](LICENSE)