Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/masa-finance/masa-contracts-identity
Smart Contracts for Soul Bound Identities
https://github.com/masa-finance/masa-contracts-identity
identity non-fungible-token smart-contracts solidity soulbound soulbound-tokens
Last synced: 1 day ago
JSON representation
Smart Contracts for Soul Bound Identities
- Host: GitHub
- URL: https://github.com/masa-finance/masa-contracts-identity
- Owner: masa-finance
- License: mit
- Created: 2022-05-29T19:16:34.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-11T13:52:04.000Z (10 months ago)
- Last Synced: 2024-04-12T18:19:17.982Z (10 months ago)
- Topics: identity, non-fungible-token, smart-contracts, solidity, soulbound, soulbound-tokens
- Language: Solidity
- Homepage: https://masa.finance
- Size: 8.61 MB
- Stars: 23
- Watchers: 5
- Forks: 8
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Masa Identity Contracts
* [Masa Identity Contracts](#masa-identity-contracts)
* [Contract Deployments](#contract-deployments)
* [Addresses of the deployed contracts](#addresses-of-the-deployed-contracts)
* [Configuration](#configuration)
* [Roles](#roles)
* [Interface](#interface)
* [Deployment](#deployment)
* [Preparations](#preparations)
* [Deploy](#deploy)
* [Installation and usage](#installation-and-usage)
* [Generation of a new release](#generation-of-a-new-release)## Contract Deployments
### Addresses of the deployed contracts
You can see the deployment address of the smart contracts in the [addresses.json](addresses.json) file. For every deployed smart contract you will find a `.` value.
#### Configuration
- `Admin`: [`0xA38dd237a3A8D50537B74a4B0D4E7E8A5359386F`](https://sepolia.etherscan.io/address/0xA38dd237a3A8D50537B74a4B0D4E7E8A5359386F)
The `admin` is allowed to set configuration variables in the smart contracts.
- `BASE_URI`: https://beta.metadata.masa.finance/v1.0
The base url for the Metadata url that is being generated from the contract
## Roles
- `deployer`: Deploys the contract, has no rights after everything has properly handed over to other roles
- `admin`: Delegated to the Masa Service account inside the Masa API. It has the rights to administrate the smart
contracts
- `minter`: Minter role. It has the rights to mint tokens to customer's wallets.## Interface
- [Abstract Soulbound Token Definition](docs/tokens/MasaSBT.md)
- [Abstract Non-Fungible Token Definition](docs/tokens/MasaNFT.md)
- [Soulbound Identity Definition](docs/SoulboundIdentity.md)
- [Soulbound Credit Score Definition](docs/SoulboundCreditScore.md)
- [Soulbound Green Definition](docs/SoulboundGreen.md)
- [Soul Name Definition](docs/SoulName.md)
- [Soul Linker Definition](docs/SoulLinker.md)
- [Soul Store Definition](docs/SoulStore.md)## Deployment
### Preparations
* Set `DEPLOYER_PRIVATE_KEY` to the deployers private key in `.env.{network}.secret`
* Set `COINMARKETCAP_API_KEY` to the CoinMarketCap API key in `.env`, if needed
* Set `ANKR_API_KEY` to the Ankr API key in `.env`, if needed
* Set `ETHERSCAN_API_KEY` to the Etherscan API key in `.env`, if needed
* Set `BSCSCAN_API_KEY` to the Etherscan API key in `.env`, if needed
* Set `POLYGONSCAN_API_KEY` to the Etherscan API key in `.env`, if needed
* Set `CELOSCAN_API_KEY` to the Etherscan API key in `.env`, if needed
* Set `BASESCAN_API_KEY` to the Etherscan API key in `.env`, if needed### Deploy
Run: `yarn deploy --network {network}` to deploy.
## Installation and usage
Installing via `npm` package:
```bash
npm i @masa-finance/masa-contracts-identity
```Import in your project:
```typescript
import {
SoulboundIdentity,
SoulboundIdentity__factory
} from "@masa-finance/masa-contracts-identity";const soulboundIdentity: SoulboundIdentity = SoulboundIdentity__factory.connect(
, // address of the deployed contract
// web3 provider
);
console.log(await soulboundIdentity.symbol());
```## Generation of a new release
From a clean `main` branch you can run the release task bumping the version accordingly based on semantic versioning:
```bash
yarn release
```The task does the following:
* Bumps the project version in `package.json`
* Creates a Git tag
* Commits and pushes everything
* Creates a GitHub release with commit messages as description
* Git tag push will trigger a GitHub Action workflow to do a `npm` releaseFor the GitHub releases steps a GitHub personal access token, exported as `GITHUB_TOKEN` is required. You can add this
environment variable to the `.env` file. [Setup](https://github.com/release-it/release-it#github-releases)