info_tfgrid/collections/projectinca/specs_blockchain/minting_contract.md
2024-08-17 13:22:25 +02:00

2.7 KiB

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
{
  "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

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