79 lines
2.7 KiB
Markdown
79 lines
2.7 KiB
Markdown
|
|
||
|
# 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
|
||
|
|
||
|
```
|