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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
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
65
Other Decks in Technology
See All in Technology
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.1k
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
170
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
880
Antigravity SDK for the Java Developer
glaforge
0
180
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
beyond jj: config & tools ecosystem
indirect
0
5.8k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
390
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
1
2.6k
AI時代、データエンジニアが一番おもろい
genshun9
0
680
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.8k
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
530
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
460
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
A Soul's Torment
seathinner
8
3.6k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
First, design no harm
axbom
PRO
2
1.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Transcript
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:コントラクトアップデート)
まとめ ネット勉強会します!