Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IOST マルチシグを理解する

newsnow
March 27, 2019

IOST マルチシグを理解する

newsnow

March 27, 2019
Tweet

More Decks by newsnow

Other Decks in Technology

Transcript

  1. 内容 1. Token20 の発行方法 2. Token721 の発行方法 3. トークン発行時の注意点 4.

    トランザクション署名の仕組み 5. アカウント管理モデルの基本 6. マルチシグの作り方
  2. Token20 Tokenコントラクト(token.iost)を利用して発行する いわゆる普通のトークン(e.g. IOST)。ただし、con g次第で制限も可能。 APIは以下の通り create(tokenSymbol, issuer, totalSupply, config);

    issue(tokenSymbol, to, amountStr); transfer(tokenSymbol, from, to, amountStr, memo); transferFreeze(tokenSymbol, from, to, amountStr, unfreezeTime, memo); destroy(tokenSymbol, from, amountStr); balanceOf(tokenSymbol, from); supply(tokenSymbol); totalSupply(tokenSymbol); //(例) iwallet call token.iost issue '["kyotoken", "bckyoto", "1000"]' --account bckyoto
  3. Token721 Token721コントラクト(token721.iost)を利用して発行する メタデータを埋め込むことで固有の価値を生み出す(NFT) APIは以下の通り create(tokenSymbol, issuer, totalSupply); issue(tokenSymbol, to, metaData);

    transfer(tokenSymbol, from, to, tokenID); balanceOf(tokenSymbol, from); ownerOf (tokenSymbol, tokenID); tokenOfOwnerByIndex(tokenSymbol, owner, index); tokenMetadata(tokenSymbol, tokenID); //(例) iwallet call token721.iost create '["kyotonft", "bckyoto", 1000]' --account bckyoto
  4. callとcallWithAuthの違い 基本的な違いは以下のとおり 要するに誰の権限でコントラクトを実行するのか if len(withAuth) > 0 && withAuth[0] {

    authList := h.ctx.Value("auth_contract_list").(map[string]int) authList[h.ctx.Value("contract_name").(string)] = 1 h.ctx.Set("auth_contract_list", authList) }
  5. 手順 step1: Convert transaction struct to byte array step2: Calculate

    the hash of the byte array with sha3 algorithm step3: Sign the hash with private key step4: Broadcast [参照]Signing a transaction