$30 off During Our Annual Pro Sale. View Details »

NEMAPIワークショップ

 NEMAPIワークショップ

MasayaYoshino

June 30, 2018
Tweet

More Decks by MasayaYoshino

Other Decks in Programming

Transcript

  1. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  2. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ஫ҙࣄ߲
    ɾ͜ͷϫʔΫγϣοϓ͸ʲϓϩάϥϛϯάॳ৺ऀ޲͚ʳͰ͢ɻ
    ɾطʹNEMͷAPIΛ࢖༻ͨ͜͠ͱͷ͋Δํʹ͸؆୯ͳ಺༰ͱͳΓ·͢ɻ
    ɾͦͷͨΊɺ্ڃऀͷํ͸಺༰Λฉ͔ͣʹίʔώʔΛҿΈͳ͕Β΋͘΋
    ͘࡞ۀ͍͍ͯͨͩͯ͠΋ɺϫʔΫγϣοϓʹࢀՃͯ͠΋େৎ෉Ͱ͢ɻ
    ɾڞ༗ϑΝΠϧ͸ͪ͜Β(https://www.dropbox.com/sh/
    l0fpzw973nxqwgs/AAABcSncNZuNalC-Md0hsLjua?dl=0)

    View Slide

  3. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    1.NEM-APIΛ࢖ͬͯΈΑ͏!!!

    View Slide

  4. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    1.͓ख࣋ͪͷNEMΞυϨεΛ४උ!
    2. ҎԼͷURLʹΞΫηε!!
    http://alice2.nem.ninja:7890/account/get?address=ࣗ
    ෼ͷNEMΞυϨε
    ※FirefoxͰ։͘ͱݟқ͍͔΋
    ※ΞυϨεͷϋΠϑϯ(-)͸࡟আ͍ͯͩ͘͠͞

    View Slide

  5. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ͜ΕͰNEM-API͕࢖͑·ͨ͠!স

    View Slide

  6. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    Ͱ͸͜ΕΛWebϖʔδͰදࣔͰ͖ΔΑ͏ʹ

    View Slide

  7. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    1.ڞ༗ϑΥϧμͷʮfirst.htmlʯΛσεΫτοϓ
    ʹμ΢ϯϩʔυ
    2.ࢦఆݸॴΛมߋ
    ͜͜ʹࣗ෼ͷ/&.ΞυϨεΛೖΕΔ

    View Slide

  8. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ͜Μͳײ͡ʹͳΓ·͢

    View Slide

  9. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    1.ϑΝΠϧΛChromeͰ։͘
    2.[։ൃऀπʔϧ]→[ίϯιʔϧ]Λදࣔ
    3.ʮ࢒ߴ֬ೝϘλϯʯΛΫϦοΫ
    4. ίϯιʔϧͷදࣔΛ֬ೝ

    View Slide

  10. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ͜Μͳײ͡Ͱද͕ࣔ͞Ε·͢
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  11. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ͜ͷσʔλΛը໘্ʹ੔ܗͯ͠දࣔ͢Δ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  12. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ߦΛ௥Ճ

    View Slide

  13. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ϘλϯΛԡ͢ͱΞυϨεͱNEM࢒ߴ͕දࣔ͞Ε·͢

    View Slide

  14. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ೚ҙͷΞυϨεͷ࢒ߴΛ֬ೝͯ͠ΈΔ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  15. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ҎԼͷίʔυΛमਖ਼
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    มߋ
    ௥Ճ
    มߋ
    ࡟আ

    View Slide

  16. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ೖྗͨ͠ΞυϨεͷ࢒ߴΛදࣔ͠·͢
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  17. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    NEMΞυϨεͷੜ੒Λͯ͠ΈΔ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  18. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ͔͜͜Βͪΐͬͱ೉͘͠ͳΓ·͢
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  19. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    1. NEM-SDKͷgithubʹΞΫηε
    https://github.com/QuantumMechanics/
    NEM-sdk
    2. ϑΝΠϧΛμ΢ϯϩʔυ͢Δ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ

    View Slide

  20. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    3. μ΢ϯϩʔυͨ͠ϑΝΠϧΛσεΫτοϓʹ
    ഑ஔ
    4. ҎԼͷίʔυΛ௥Ճ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  21. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    3. μ΢ϯϩʔυͨ͠ϑΝΠϧΛσεΫτοϓʹ
    ഑ஔ
    4. ҎԼͷίʔυΛ௥Ճ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  22. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    NEMΞΧ΢ϯτੜ੒ίʔυΛ௥Ճ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  23. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ͕͢͞ʹਏ͍ͷͰίϐϖͰ͍͍Ͱ͢Αw
    var nem = require("nem-sdk").default;
    const networkId = nem.model.network.data.mainnet.id;
    const rBytes = nem.crypto.nacl.randomBytes(32);
    const privateKey = nem.utils.convert.ua2hex(rBytes);
    const keyPair = nem.crypto.keyPair.create(privateKey);
    const address = nem.model.address.toAddress(keyPair.publicKey.toString(),
    networkId);
    const publicKey = keyPair.publicKey.toString();
    const neminfo = {
    address: address,
    privateKey: privateKey,
    publicKey: publicKey,
    };
    console.log(neminfo);
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  24. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    Consoleʹදࣔ͞ΕΔ͜ͱΛ֬ೝ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ※࣮ࡍʹ࢖༻͢ΔΞΧ΢ϯτͰprivateKey͸
    ެ։NG!!!!!
    Ϧϩʔυ͢ΔͱผͷΞυϨεʹߋ৽͞Ε·͢ɻ

    View Slide

  25. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ࡞੒ͨ͠ΞυϨεΛը໘ʹදࣔ͢Δ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  26. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ҎԼͷίʔυΛ௥Ճ͢Δ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ௥Ճ
    ௥Ճ

    View Slide

  27. NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    දࣔΛ֬ೝ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  28. QR
    ࡞੒ͨ͠ΞυϨεΛQRίʔυͰදࣔ͢Δ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  29. QR
    ͦ΋ͦ΋NEMͷQRίʔυʹ͸ͲΜͳ৘ใ͕
    ࡌͬͯΔΜͩΖ͏ʁ
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ

    View Slide

  30. QR
    ٢໺ͷΞυϨε
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ͜ΕΛNEMΞϓϦ
    Ͱ͸ͳ͍௨ৗͷQR
    εΩϟφͰಡΈऔͬͯΈΔ

    View Slide

  31. QR
    ٢໺ͷΞυϨε
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    {“v”:2,
    “type”:”1”,
    “data”:{
    “addr”:”NEMΞυϨε”,
    “name”:”Primary”
    }
    }

    View Slide

  32. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ͜ͷจࣈྻΛQRίʔυʹม׵Ͱ͖Ε͹Α͍

    View Slide

  33. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ΍ͬͯΈΑ͏ʂ

    View Slide

  34. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    1. jQuery-qrcode-masterΛσεΫτοϓʹΠ
    ϯετʔϧ
    https://github.com/jeromeetienne/jquery-
    qrcode

    View Slide

  35. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    1. σεΫτοϓͰZipϑΝΠϧΛղౚ
    2. ҎԼͷίʔυΛ௥ه
    ௥Ճ

    View Slide

  36. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ҎԼͷίʔυ΋௥Ճ
    ௥Ճ

    View Slide

  37. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ҎԼͷίʔυ΋௥Ճ
    ௥Ճ
    console.log(neminfo);
    $('.myAddress').text(neminfo.address);
    var qr = {
    "v": 2,
    "type": 1,
    "data": {
    "addr": neminfo.address,
    "name": "Primary"
    }
    };
    $('#qrcode').qrcode({width: 200, height:
    200, text: JSON.stringify(qr)});
    ௥Ճݸॴ

    View Slide

  38. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    දࣔΛ֬ೝ

    View Slide

  39. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    QRίʔυΛ͓ख࣋ͪͷNEMΞϓϦͰಡΈࠐΉ
    (ઈରʹૹۚ͠ͳ͍Ͱ͍ͩ͘͞!!!)

    View Slide

  40. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ͋ͱ΢ΥϨοτ׬੒͢ΔͨΊʹඞཁͳͷ͸

    View Slide

  41. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ૹۚ!

    View Slide

  42. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    ૹۚ!

    View Slide

  43. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    let PRIVATEKEY = ൿີ伴;
    let VOLUME = ૹΔNEMͷྔ;
    let PASSWORD = ΢ΥϨοτͷύεϫʔυ;
    let MESSAGE = ϝοηʔδ;
    let endpoint = nem.model.objects.create('endpoint')('http://
    hachi.nem.ninja', nem.model.nodes.defaultPort);
    let common = nem.model.objects.create('common')(PASSWORD, PRIVATEKEY);
    let transferTransaction = nem.model.objects.create('transferTransaction')
    (PRIVATEKEY, VOLUME, MESSAGE);
    let preparedTransaction =
    nem.model.transactions.prepare('transferTransaction')(common,
    transferTransaction, nem.model.network.data.mainnet.id);
    nem.model.transactions.send(common, preparedTransaction,
    endpoint).then(function(res){
    console.log(res);
    }, function(err){
    console.log(err);
    });
    ίʔυ͚ͩɺΞοϓ͓͖ͯ͠·͢
    (ୠ͠ɺຊ൪ϓϩμΫτͰ͸࢖༻͠ͳ͍Ͱ͍ͩ͘͞ɺൿີ伴ͷ҉߸Խ͕ඞཁͰ͢ɻ)

    View Slide

  44. QR
    NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    ௥Ճ
    Ҏ্ɺNEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘
    ΋͘ձͰͨ͠ɻ
    ͜ΕΛ͖͔͚ͬʹNEMͷ͓खܰ͞Λ஌͍ͬͯ
    ͚ͨͩΔͱخ͍͠Ͱ͢ɻ
    ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

    View Slide

  45. QR
    ௥Ճ
    ٳܜ

    View Slide

  46. λΠϜςʔϒϧ
    ࣌ؒ ಺༰
    17:00ʙ19:00 NEMΞϓϦ։ൃϫʔΫγϣοϓ&΋͘΋͘ձ
    19:00ʙ19:15 catapult͍ͬͯ͡ΈͨΑ(@planethouki)
    19:15ʙ19:30 NEMͷࣗಈҾ͖མͱ͠ΞϓϦ࡞ͬͨΑ(@ayasamind)
    19:30ʙ20:45 ަྲྀձ
    21:00 ऴྃ༧ఆ

    View Slide