info_tfgrid/collections/projectinca/specs_blockchain/minting_contract.md

79 lines
2.7 KiB
Markdown
Raw Normal View History

2024-08-17 11:22:25 +00:00
# Minting Contract
The minting can happen over multiple blockchains.
- name e.g. INCAG in case of ThreeFold
- description
- address, the address of this minting contract
- dest_token_name e.g. INCA in case of ThreeFold
- dest_chain e.g. SOLANA
- link (link to more info about the minter)
- multisig_accounts e.g. 9 accounts need to sign
- multisig_min_signature e.g. 6 need to sign, this is for releasing the generated token INCA
- smart_contract_addr: address of the smart contract
```json
{
"minting_contract": {
"name": "INCAG",
"description": "Minting contract for INCA (Internet Capacity) tokens",
"address": "0xABCDEF1234567890ABCDEF1234567890ABCDEF12",
"dest_token_name": "INCA",
"dest_chain": "SOLANA",
"link": "https://example.com/incag_minter_info",
"multisig_accounts": [
"0x1111111111111111111111111111111111111111",
"0x2222222222222222222222222222222222222222",
"0x3333333333333333333333333333333333333333",
"0x4444444444444444444444444444444444444444",
"0x5555555555555555555555555555555555555555",
"0x6666666666666666666666666666666666666666",
"0x7777777777777777777777777777777777777777",
"0x8888888888888888888888888888888888888888",
"0x9999999999999999999999999999999999999999"
],
"multisig_min_signature": 6,
"smart_contract_addr": "0xABCDEF1234567890ABCDEF1234567890ABCDEF12",
},
}
```
## implementation diagram
```mermaid
sequenceDiagram
participant Requester
participant MintingContract
participant MultisigAccounts
participant SmartContract
participant DestChain
Requester->>MintingContract: Request token minting
MintingContract->>SmartContract: Verify request
alt Request is valid
SmartContract->>MultisigAccounts: Initiate signature collection
loop Until multisig_min_signature reached
MultisigAccounts->>MultisigAccounts: Collect signatures
end
MultisigAccounts-->>SmartContract: Return collected signatures
alt Sufficient signatures collected
SmartContract->>DestChain: Mint tokens (dest_token_name)
DestChain-->>SmartContract: Confirm minting
SmartContract-->>MintingContract: Minting successful
MintingContract-->>Requester: Tokens minted successfully
else Insufficient signatures
SmartContract-->>MintingContract: Minting failed (insufficient signatures)
MintingContract-->>Requester: Minting request denied
end
else Request is invalid
SmartContract-->>MintingContract: Invalid request
MintingContract-->>Requester: Minting request denied (invalid)
end
```