eosjs使用説明文書

11475 ワード

eosjs使用説明文書
本使用説明はEOIO 1.0.22バージョンに基づいています.最新版の教程はここを参照してください.
バージョンの説明:
Version
EOIO/eosjs
Npm
EOIO/eos
Docker
Node
dawn 4.2
タグ 13.x.xnpm install eosjs(version 13)
dawn-v 4.2.0
eosio/eos:20180526
local docker
dawn 4.1
タグ:12 x.xnpm install eosjs(version 12)
dawn-v 4.1.0
eosio/eos:20180519
local docker
dawn 4
タグ:11 x.xnpm install eosjs@dawn4 (version 11)
dawn-v 4.0.0
eosio/eos:dawn-v 4.0.0
local docker
DAWN-2008-04-23-ACHA
タグ:9.x.x
npm installeosjs@dawn3
DAWN-2008-04-23-ACHA
eosio/eos:DAWN-2008-04-23-A LPHA
Dockerプロファイル
dawn 3
タグ:8.x.x
npm installeosjs@8
dawn-v 3.0
eosio/eos:dawn 3 x
Dockerプロファイル
dawn 2
branch:dawn 2
npm install eosjs
branch:dawn-2.x
eosio/eos:dawn 2 x
Dockerプロファイル
環境をサポート
node v 8+npm 6.1.11
  • 現在の最新バージョンのeosjsは「15.0.2」で、eosio 1.0.5-1.0.7
  • をサポートしています.
  • Coverted some types in format module from unsigned to signed:UDecmalPad->DecimalPad for example(15.0.1)
  • All asset and exteded uasset amounts require exact decimal placces(Change 1 SYS to 1.0000 SYS)(15.0.0)
  • Use config.verbose instead of config.debug(14.1.0)
  • EOSJS
    使い方:
    Eos = require('eosjs') // Eos = require('./src')
    
    // eos = Eos.Localnet() //   127.0.0.1:8888
    eos = Eos.Testnet() //   eos.io     testnet at eos.io
    
    // All API methods print help when called with no-arguments.
    eos.getBlock() //    
    
    // Next, your going to need nodeos running on localhost:8888
    
    // If a callback is not provided, a Promise is returned
    eos.getBlock(1).then(result => {console.log(result)})
    
    // Parameters can be sequential or an object
    eos.getBlock({block_num_or_id: 1}).then(result => console.log(result))
    
    // Callbacks are similar
    callback = (err, res) => {err ? console.error(err) : console.log(res)}
    eos.getBlock(1, callback)
    eos.getBlock({block_num_or_id: 1}, callback)
    
    // Provide an empty object or a callback if an API call has no arguments
    eos.getInfo({}).then(result => {console.log(result)})
    
    APIで呼び出したドキュメントを参照してください.
  • chain.json
  • account_history.json
  • リンクの設定
    Eos = require('eosjs') // Eos = require('./src')
    
    // Optional configuration..
    config = {
      keyProvider: ['PrivateKeys...'], // WIF string or array of keys..
      httpEndpoint: 'http://127.0.0.1:8888',
      mockTransactions: () => 'pass', // or 'fail'
      transactionHeaders: (expireInSeconds, callback) => {
        callback(null/*error*/, headers)
      },
      expireInSeconds: 60,
      broadcast: true,
      debug: false,
      sign: true
    }
    
    eos = Eos.Localnet(config)
    
    パラメータの説明:
  • mockTransation(オプション)
  • パス:放送しないで、付加取引の仕事
  • fail:放送しないで、装填取引が失敗しました.
  • null|undefined:ラジオ(デフォルト)
  • トレーンactionHeaders(オプション)は、トランザクションの記録ヘッドを手動で設定し、この方法のcalbackコールバック関数は、取引のたびに呼び出される.ヘッドレコードのドキュメントを参照してください. eosjs-api菗headers
  • オプション
    例えば:eos.transfer(params, options)
    options = {
      broadcast: true,
      sign: true,
      authorization: null
    }
    
  • authorization  {array|auth} - このパラメータは、マルチ署名の場合、署名アカウントと権限を識別するために使用されます.文字列形式で、例えば:account@permission またはオブジェクトを使用して、例えば:object
  • 書かない場合は、デフォルトのライセンスを使用します.
  • ライセンスアカウントを提供すると、他のアカウントは
  • に追加できません.
  • 複数のアカウントはアカウント名に従って並べ替えられます.
  • 使い方
    テストネットワークを使用する場合は、キーProviderに秘密鍵を設定する必要があります.
    Eos = require('eosjs') // Eos = require('./src')
    
    eos = Eos.Localnet({keyProvider: '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'})
    
    // Run with no arguments to print usage.
    eos.transfer() //    
    
    // Usage with options (options are always optional)
    options = {broadcast: false} //       
    eos.transfer({from: 'inita', to: 'initb', quantity: '1 EOS', memo: ''}, options) // inita  1 EOS initb  
    
    // Object or ordered args may be used.
    eos.transfer('inita', 'initb', '2 EOS', 'memo', options)
    
    // A broadcast boolean may be provided as a shortcut for {broadcast: false}
    eos.transfer('inita', 'initb', '1 EOS', '', false)
    
    APIメソッドのパラメータを参照してください. エオロオsystem
    【翻訳者注】投票者の情報を取得して使う場合  voter_info、ブロックノード情報を取得して使用する.  producer_info、資産使用を発表する.  issue、ブロックチェーンパラメータを取得して使用する  blockchain_parameters
    署名の高級な使い方について、調べてみます.  keyProvider、eosjs-keygen または unit test
    略字ルール(Shothand)
    いくつかの特殊な場合には、例えば、アセットクラスAsetおよびライセンスクラスAuthoritなどの簡略化が使用されてもよい.
  • deposit:  '1 eos' はい、  1.0000 EOSの略字
  • owner:  'EOS6MRy..' はい、  {threshold: 1, keys: [key: 'EOS6MRy..', weight: 1]} の略字
  • recover:  inita または  inita@active それぞれ以下の略字形式です.
  • {{threshold: 1, accounts: [..actor: inita, permission: active, weight: 1]}}
  • inita@other active権限をother
  • に変更します.
    Eos = require('eosjs') // Eos = require('./src')
    
    initaPrivate = '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'
    initaPublic = 'EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV'
    keyProvider = initaPrivate
    
    eos = Eos.Localnet({keyProvider})
    
    eos.newaccount({
      creator: 'inita',
      name: 'mynewacct',
      owner: initaPublic,
      active: initaPublic,
      recovery: 'inita'
    })
    
    インテリジェント契約の展開setcodeコマンドは、署名と放送前にWASMのテキスト知能契約をバイナリファイルにコンパイルし、npmのテキストを使用します.  binaryenライブラリは、デフォルトの場合、ライブラリファイルが大きいので、eosjsに含まれていません.binaryenライブラリをインストールする:
    npm [email protected] binaryenバージョンがEOSバージョンと互換性がない場合は、参照してください. problematic jsソースでbinaryenを導入します.
    binaryen = require('binaryen');
    eos = Eos.Testnet({..., binaryen});
    
    一つはeosjsを通じてトークン発行の完全コードを作っています.
    Eos = require('eosjs')
    let {ecc} = Eos.modules
    
    initaPrivate = '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3';//inita  
    
    currencyPrivate = ecc.seedPrivate('currency');
    currencyPublic  = ecc.privateToPublic(currencyPrivate);
    
    keyProvider     = [initaPrivate, currencyPrivate];
    
    binaryen = require('binaryen');//     
    
    eos = Eos.Localnet({keyProvider, binaryen});
    
    eos.newaccount({
        creator:    'inita',
        name:       'currency',
        owner:      currencyPublic,
        active:     currencyPublic,
        recovery:   'inita'
    });
    
    contractDir = `${process.env.HOME}/eosio/dawn3/build/contracts/currency`; //      
    wast = fs.readFileSync(`${contractDir}/currency.wast`);//  wast  ,wast    eosiocpp  
    abi  = fs.readFileSync(`${contractDir}/currency.abi`);//  abi  
    
    //           
    eos.setcode('currency', 0, 0, wast);
    eos.setabi('currency', JSON.parse(abi));
    
    currency = null;
    // eos.contract(account, [options], [callback]);
    eos.contract('currency').then(contract => currency = contract);//    
    
    //  inita       ,       CUR
    currency.issue('inita', '10000.0000 CUR', {authorization: 'currency'});
    
    原子操作
    ブロックチェーンレベルの原子動作例:
    Eos = require('eosjs')
    
    keyProvider = [
        '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3',
        Eos.modules.ecc.seedPrivate('currency')
    ]; //keyProvider      
    
    eos = Eos.Localnet({keyProvider});
    
    //          ,        
    eos.transaction(eos => 
        {
            eos.transfer('inita', 'initb', '1 EOS', '');
            eos.transfer('inita', 'initc', '1 EOS', '');
        }
        // [options],
        // [callback]
    );
    
    //      currency    
    eos.transaction('currency', currency => {
        currency.transfer('inita', 'initb', '1 CUR', '');
    });
    
    //              
    eos.transaction(['currency', 'eosio'], ({currency, eosio}) => {
        currency.transfer('inita', 'initb', '1 CUR', '');
        eosio.transfer('inita', 'initb', '1 EOS', '');
    });
    
    //      
    eos.contract('currency').then(currency => {
        currency.transaction(cur => {
            cur.transfer('inita', 'initb', '1 CUR', '');
            cur.transfer('initb', 'inita', '1 CUR', '');
        });
        currency.transfer('inita', 'initb', '1 CUR', '');
    });
    
    マニュアル配置でトランスポート
    メリット、柔軟性が高い
    Eos = require('eosjs')
    
    eos = Eos.Localnet({keyProvider: '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'});
    
    eos.transaction({
        actions: [
            {
                account: 'eosio',
                name:    'transfer',
                authorization: [{
                    actor:      'inita',
                    permission: 'active'
                }],
                data: {
                    from:     'inita',
                    to:       'initb',
                    quantity: '7 EOS',
                    memo:     'testing'
                }
            }
        ]
    });
    
    後続開発の更新eosjsnodeosのバイナリフォーマットは継続的に更新されるので、nodeosを実行するときはパラメータを追加する必要があります.また、パッケージ構成ファイルのコンパイルに注意してください.  --skip-transaction-signaturesにおけるディレクトリ構造の指向性  package.json、もしテストするなら、./libからimportを導入する必要があります.
    Eos = require('./src');
    eos = Eos.Localnet(...);
    
    上記に加えて、./src例は、多くの情報を提供することができる.
    // 'nonce' is a struct but could be any type or struct like: uint8 or transaction
    nonce = {value: '..'}
    nonceBuffer = eos.fc.toBuffer('nonce', nonce)
    assert.deepEqual(nonce, eos.fc.fromBuffer('nonce', nonceBuffer))
    
    // Serialization for a smart-contract's Abi:
    eos.contract('currency', (error, c) => currency = c)
    issue = {to: 'inita', quantity: '1.0000 CUR', memo: 'memo'}
    issueBuffer = currency.fc.toBuffer('issue', issue)
    assert.deepEqual(issue, currency.fc.fromBuffer('issue', issueBuffer))
    
    関連ライブラリファイルの参考
    以下のこれらのライブラリは、シームレスにeosに統合されており、別に持ち出して使用することができるかもしれない.
    var{appi,ecc,json,Fcbuffer,format}=Eos.modules
  • フォーマット ./フォーマット.md
  • ブロックチェーン名検証
  • 資産類名称フォーマット
  • eosjs-appi[ Github NPM]
  • EOSブロックチェーンノード(nodeos)のAPI
  • にリモートアクセスする.
  • は、このAPIを使用して、ブロックチェーン上の読み取り専用データに直接アクセスすることができる(取引署名は不要)
  • eosjs-ecc[ Github NPM]
  • は、秘密鍵、公開鍵、署名管理、AES、暗号化と復号
  • を提供する.
  • 公開鍵/秘密鍵
  • を検証する.
  • EOS対応のchecksumsを用いて暗号化/復号化する
  • 共有のための秘密を計算します.
  • json{appi} achema
  • はブロックチェーンのjsonデータ操作API
  • を定義している.
  • eosjs-keygen[ Github NPM ]
  • 秘密鍵と鍵管理
  • Fcbuffer[ Github NPM ]
  • バイナリデータプログレッシブ
  • クライアント対取引バイナリコード署名
  • により、お客様に現在の署名状況を知ることができます.
  • ブロックチェーンブラウザ
    ブロックチェーンブラウザを取得してインストールし、EOSテストチェーンのブロックチェーンブラウザを以下のようにインストールします.
    git clone https://github.com/EOSIO/eosjs.git
    cd eosjs
    npm install
    npm run build_browser
    
    ウェブファイルを編集
    
    
    var eos = Eos.Testnet()
    //...