Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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` release

For 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)