Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
neon-jsで始めるNEO dApps開発入門
Search
GENM
September 30, 2018
Programming
0
450
neon-jsで始めるNEO dApps開発入門
ブロックチェーンNEOの開発をするにあたって、有力な選択肢であるJavascript SDKのneon-jsについて紹介
GENM
September 30, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
130
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
720
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
250
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
3
3.4k
CSC509 Lecture 08
javiergs
PRO
0
230
Webサーバーサイド言語としてのRustについて
kouyuume
0
3.2k
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
110
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
1
470
技術的負債の正体を知って向き合う
irof
0
210
コード生成なしでモック処理を実現!ovechkin-dm/mockioで学ぶメタプログラミング
qualiarts
0
230
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
230
Go言語はstack overflowの夢を見るか?
logica0419
0
510
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
KATA
mclloyd
PRO
32
15k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Context Engineering - Making Every Token Count
addyosmani
7
280
Fireside Chat
paigeccino
40
3.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
The Language of Interfaces
destraynor
162
25k
Building Adaptive Systems
keathley
44
2.8k
Transcript
neon-jsͰ࢝ΊΔdApps։ൃೖ JS SDK for NEO blockchain
NEO Keymakers Japan @genm ࣗݾհ ࠓా େ(23) ܚጯٛक़େֶϝσΟΞσβΠϯݚڀՊ म࢜1 Taisei
Imada ৯ΔΓ NEO Keymakers Japanॴଐ ࡢ·ͰΧϯηϦϯάϩϘοτͷ։ൃ ݱࡏNEOΛத৺ʹϒϩοΫνΣʔϯͷษڧத ిࢠ࡞ Facebook: taisei_imada
NEO Keymakers Japan @genm neon-js: NEO BlockchainͷͨΊͷJavascript SDK ΥϨοτػೳ τϥϯβΫγϣϯ
ͦͷଞศརػೳ neon-js ϥΠτΥϨοτΛ࡞͢Δͷʹेͳػೳ
NEO Keymakers Japan @genm ϥΠτΥϨοτͱϑϧϊʔυͷҧ͍ ϥΠτΥϨοτ ϑϧϊʔυ neo-python ඞཁͳ༰ྔ͕গͳ͍ͷͰεϚϗɺϒϥβͰ͍͍͢ neo-GUI
neo-CLI ϥΠτΥϨοτɺϒϩοΫνΣʔϯͷσʔλΛ࣋ͨͳ͍ ϑϧϊʔυʹґଘ͢ΔΘΓʹ༰ྔগɺػೳγϯϓϧ ϥΠτΥϨοτϑϧϊʔυΛհͯ͠ϒϩοΫνΣʔϯͱΓऔΓΛߦ͏ ϒϩοΫνΣʔϯ طଘϊʔυ
NEO Keymakers Japan @genm Πϯετʔϧ npm i @cityofzion/neon-js <script src="https://unpkg.com/@cityofzion/neon-js"
/> npm ϒϥβ(CDN)
NEO Keymakers Japan @genm neon-js 4.0+ͷߏ Core Module Plugin Module
ɾAPI ɾNEP5 ɾWallet ɾTransactions ɾRPC ɾSmart Contract ɾUtility ɾConstants ɾSettings ɾLogging ϒϩοΫνΣʔϯͱͷΓऔΓʹඞཁͳجຊػೳ ֎෦Ϧιʔεʹґଘ͢Δิॿతͳͷ
NEO Keymakers Japan @genm Core Modules Wallet: wallet import {
wallet } from “@cityofzion/neon-js"; ϓϥΠϕʔτΩʔ͔ΒΥϨοτΛੜͯ͠෮߸Խ const c = new wallet.Account( ɹ“6PYLHmDf6AjF4AsVtosmxHuPYeuyJL3SLuw7J1U8i7HxKAnYNsp61HYRfF” ); // ҉߸Խ͞ΕͨΩʔɾΞυϨεͷදࣔ console.log(c.encrypted); // encrypted key console.log(c.address); // throws error // ύεϫʔυΛೖྗͯ͠ΥϨοτͷ෮߸Խ c.decrypt("city of zion"); console.log(c.address); // ALq7AWrhAueN6mJNqk6FHJjnsEoPRytLdW
NEO Keymakers Japan @genm Core Modules Transactions: tx // τϥϯβΫγϣϯͷੜͱγϦΞϥΠζ
import { tx } from “@cityofzion/neon-js"; let tx = Neon.create.tx({ type: 128 }); const serializedTx = tx.serialize(); RPC: rpc // ΫΤϦΛ࡞ͯ͠ϊʔυʹ໋ྩΛૹ৴͢Δɻ import { rpc } from "@cityofzion/neon-js"; const client = new rpc.rpcClient(URL); let query = Neon.create.query({method: 'custommethod'} client.execute(query)
NEO Keymakers Japan @genm Core Modules Smart Contract: sc Utility:
u // εϚʔτίϯτϥΫτͷςετ(test invoke) import { sc, rpc } from “@cityofzion/neon-js"; const sb = new sc.scriptBuilder() sb.emitAppCall(scriptHash, operation, args[]) rpc.Query.invokeScript(sb.str).execute(nodeURL) // Invoke // จࣈྻΛHEXʹͨ͠ΓɺHEX͔Βจࣈྻʹͨ͠Γ import { u } from “@cityofzion/neon-js"; u.str2hexstring(“normalString”); //string→Hex u.hexstring2str("6e6f726d616c537472696e67"); // Hex→string
NEO Keymakers Japan @genm Core Modules Constants: CONST Settings: settings
Logging: logging // ఆ͕৭ʑೖ͍ͬͯΔ import { CONST } from “@cityofzion/neon-js"; const rpcVersion = CONST.RPC_VERSION // ωοτϫʔΫͷొ import Neon, { settings } from “@cityofzion/neon-js"; const newNet = new Neon.rpc.Network({ name: "NewNet" }); Neon.add.network(newNet); // ϩάͷઃఆ import { logging } from “@cityofzion/neon-js"; logging.logger.setAll('info')
NEO Keymakers Japan @genm Plugin Module ֎෦APIαʔό(neoscan͋Δ͍neonDB)͕ແ͍ͱಈ͔ͳ͍ API NEP5 εϚʔτίϯτϥΫτ͕NEP5ͷن֨ʹͦͬͨߏΛ͍ͯ͠Δඞཁ͕͋Δ
// Balanceͷऔಘ import { api } from “@cityofzion/neon-js”; api.neoscan.getBalance("http://www.neoscan-testnet.io/test_net/v1/", address); // NEP5τʔΫϯͷใऔಘ api.nep5.getTokenInfo("http://seed1.neo.org:20332", rpxScriptHash);
NEO Keymakers Japan @genm neon-jsΛͬͨΞϓϦߏ NEO Blockchain neoscan ΫϥΠΞϯτ PluginModuleܥͷૢ࡞
InvokeɺBalanceͳͲ ϒϩοΫνΣʔϯͷૢ࡞ CoreModuleܥͷૢ࡞ WalletɺTransactionɺRPC
NEO Keymakers Japan @genm neoscanͱ NEO Blockchain neoscan ಉظ άϥϑΟΧϧͳWEBΞϓϦέʔγϣϯ͖ͷAPIαʔό
શͯͷτϥϯβΫγϣϯཤྺ͔ΒͦΕͧΕͷΞΧϯτͷߴΛࢉग़
NEO Keymakers Japan @genm ϓϥΠϕʔτωοτͰָʹ։ൃ͢Δ https://github.com/keymakers/neo-scan-docker NEOSCAN DOCKER $ git
clone https://github.com/keymakers/neo-scan-docker.git $ cd neo-scan-docker $ docker-compose up -d Private net neoscan DockerCompose
NEO Keymakers Japan @genm ऴΘΓʹ neon-jsɺϒϥβElectronͰಈ͔͢ dApps։ൃʹ͓͍ͯݱঢ়࠷༗ྗͳબࢶ
NEO Keymakers Japan @genm ࢀߟࢿྉ 1. neon-js(Github) https://github.com/CityOfZion/neon-js 2. neon-js(Document)
http://cityofzion.io/neon-js/ 3. neon wallet https://neonwallet.com/ 4. neoscan https://neoscan.io/ 5. neoscan docker https://github.com/slipo/neo-scan-docker