Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IOST マルチシグを理解する
Search
newsnow
March 27, 2019
Technology
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IOST マルチシグを理解する
newsnow
March 27, 2019
Transcript
34 slides
2019/03/27 Blockchain Kyoto #13 「Javascriptで独自トークン作成」
自己紹介 ARATA(@newsnow) もとはビジネスコンサルタント 超上流から川下り中 現在の本業は「父親」
「注意喚起」 https://iost.biss.com/ で、IOSTパートナーとして立 候補している「Blockchain Kyoto」は当勉強会とは無 関係です。 パートナー投票される際は、十分にご注意ください。
前回ご紹介したIOSTですが、 先月、無事にメインネットがローンチされました
前回のおさらい 高セキュリティ / 高分散 / 超高TPS Javascriptでスマートコントラクト コントラクトはアップデート可能 送金手数料は無料(IOSTではなくiGASを消費) アーキテクチャはよく考えられている
(PoB / HFFS / 貢献モデル / IVM / MVCC ...) CTOのテリーはすげーイイ奴
今回の目標 マルチシグを理解する
そのためには 「トランザクション署名」 と 「アカウント管理モデル」 の理解が必要!
内容 1. Token20 の発行方法 2. Token721 の発行方法 3. トークン発行時の注意点 4.
トランザクション署名の仕組み 5. アカウント管理モデルの基本 6. マルチシグの作り方
①Token20 の発行方法
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
②Token721 の発行方法
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
とても簡単 自分でコントラクトを書く必要もない
Note1 & Note2 (独自トークンを発行してみる)
③トークン発行時の注意点 (独自コントラクトを作成する場合)
スマコンは、セキュリティやコストの面 で気をつけないといけないことが沢山 ある。
基本的なポイント コントラクトの中身は公開される 攻撃者の視点で考える 権限に気をつける callWithAuthを乱用しない できるだけ早く失敗させる amountLimitを適切に設定する 独自コントラクトの中から独自トークンを操作しない コントラクトに詰め込みすぎない (API/コントラクト/SDK/RPC/外部PG
を使い分ける) ショートコードを心がける 使えるjsを把握しておく (※例外的事例は後ほど紹介します)
APIの種類 Blockchain JSON-RPC Contract GRPC SDK (独自) 種類が多いのでややこしい(APIの階層・内外を意識する)
コントラクトの種類 native gas js ram original contract... domainコントラクトでcontractに別名をつけられる(現在はv0.0.0)
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) }
④トランザクション署名の仕組み
トランザクション(データ)がブロックに取り込まれ、ブロックチェーンに記録 されるまでを簡単に整理すると 1. 署名→ブロードキャスト(各自) 2. 検証→ブロードキャスト(node) 3. ブロック生成→ブロードキャスト(witness) トランザクション作成者が関係するのは、「署名→ブロードキャスト」だけ。 ただ、iwalletやSDKを使っていると、この流れを把握しにくい。
手順 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
見たほうが早い (Demo1:ステップごとの変化を確認してみる)
⑤アカウント管理モデルの基本
None
[参照]Account Permission System
見たほうが早い (Demo2:状況を再現してみる)
アイデア次第で柔軟な設計が可能!
⑥マルチシグ
マルチシグとは マルチシグネチャーの略称で、トランザクションの署名に複数 の秘密鍵を必要とする技術。 一つの秘密鍵で署名を行うシン グルシグに比べセキュリティが高い、秘密鍵紛失時に対応しや すいなどのメリットがある。 また、実行権限を分散させることも できる。
コントラクトに実行条件を設ける 自分しか実行できない 特定の人しか実行できない コントラクトしか実行できない グループ内の人しか実行できない 複数人の署名がないと実行できない
見たほうが早い (Demo3:コントラクトアップデート)
まとめ ネット勉強会します!
More Decks by newsnow
See All by newsnow
独自ブロックチェーンで作る請求書システム
newsnow
0
250
ブロックチェーン をやる前に知っておくべきこと
newsnow
0
200
トラストレスを考える
newsnow
0
200
Blockchain Kyoto #12
newsnow
0
270
Blockchain Kyoto #09
newsnow
0
68
Other Decks in Technology
See All in Technology
Steering と Hook (チームの決まりを守らせる) | 目指せ Kiro マスター 06
inariku
PRO
2
120
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
500
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
400
小さなエージェントから始めてみよう!実践コンテキストエンジニアリング
iwamot
PRO
0
110
あの日、見つかっていなかったらどうなっていたか
kazzpapa3
2
140
会社説明資料_最新版
demaecan
0
32k
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
150
農夫は秘伝のタレを知らない - NOBODY KNOWS THE HIDDEN SOURCE - Kaggriculture 3rd Place Solution
masspeaks
0
200
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
230
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
670
DevOps Agentにあらゆるセキュリティインシデントのトリアージを任せた件
jirtosterone
1
130
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
990
Writing Fast Ruby
sferik
630
63k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
580
Heart Work Chapter 1 - Part 1
lfama
PRO
11
37k
How to make the Groovebox
asonas
2
2.6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
460
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Test your architecture with Archunit
thirion
2
2.5k
Music & Morning Musume
bryan
48
7.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
3k
The Cost Of JavaScript in 2023
addyosmani
56
10k
The Curious Case for Waylosing
cassininazir
1
610