Hyperledger burrow集成truffle

環境

os:centos7.6

1. 安裝nodejs和npm

安裝nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm 
 nvm --version

使用nvm安裝node和npm

nvm install node
node --version
npm --version

安裝開發工具

sudo yum install gcc-c++ make

2. 安裝solc

參考:https://blog.csdn.net/kk3909/article/details/105381559

3. 安裝truffle

npm install truffle -g

報錯?

Error: EACCES: permission denied, open '/root/.config/truffle/config.json'
You don't have access to this file

再安裝一次

npm install truffle -g --unsafe-perm

4. 使用truffle部署智能合約

4.1 創建項目

mkdir MetaCoin
cd MetaCoin
truffle unbox metacoin

4.2 修改config

cat truffle-config.js
module.exports = {
  networks: {
    burrow: {
      host: "localhost",
      port: 26860,
      network_id: "*"
   }
  }
};

4.3 編譯

truffle  compile

4.4 測試

truffle  test

4.5 部署

 truffle  deploy --network burrow

報錯?

Error: Expected parameter 'from' not passed to function.
    at /root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/expect/index.js:5:1
    at Array.forEach (<anonymous>)
    at Object.options (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/expect/index.js:3:1)
    at Object.fork (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/environment/environment.js:30:1)
    at setupDryRunEnvironmentThenRunMigrations (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:225:1)
    at /root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:207:1
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

看起來是缺少from參數,修改一下truffle-config.js,from爲節點的創世地址。

module.exports = {
  networks: {
    burrow: {
      host: "localhost",
      port: 26860,
      from: "7E4F21487B2E2CB2F6DE9AEA1875BD1FC55114CE",
      network_id: "*"
   }
  }
};
Error:  *** Deployment Failed ***

"Migrations" -- sender account not recognized.

    at /root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/deployer/src/deployment.js:364:1
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at Migration._deploy (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/migrate/migration.js:70:1)
    at Migration._load (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/migrate/migration.js:57:1)
    at Migration.run (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/migrate/migration.js:167:1)
    at Object.runMigrations (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:148:1)
    at Object.runFrom (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:110:1)
    at Object.run (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:87:1)
    at runMigrations (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:253:1)
    at setupDryRunEnvironmentThenRunMigrations (/root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:241:1)
    at /root/.nvm/versions/node/v13.12.0/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:207:1

還是出錯,通過web3.eth.accounts是查詢不到任何賬戶的,問題應該在這。

web3不支持ed25519類型的地址,我們重新生成賬戶,再測試。

./burrow spec -v1 -d1 |./burrow configure -s-  --curve-type secp256k1 >burrow.toml

這時通過web3.eth.accounts可以查詢到賬戶,再部署一遍
還是報錯?

Error:  *** Deployment Failed ***

"Migrations" -- Returned error: account not found at address 0xbdb18dda8da1bfc0123143674f86d8ca506c9ffa.

    at /usr/local/lib/node_modules/truffle/build/webpack:/packages/deployer/src/deployment.js:364:1
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at Migration._deploy (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/migration.js:70:1)
    at Migration._load (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/migration.js:57:1)
    at Migration.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/migration.js:167:1)
    at Object.runMigrations (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:148:1)
    at Object.runFrom (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:110:1)
    at Object.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:87:1)
    at runMigrations (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:253:1)
    at setupDryRunEnvironmentThenRunMigrations (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:241:1)
    at /usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:207:1

經查詢根本沒有這個賬戶0xbdb18dda8da1bfc0123143674f86d8ca506c9ffa,從哪來??

發現都是dry-run時報錯,最終解決方案:

 truffle  deploy --network burrow --skip-dry-run

可以部署、調用合約,但通過grpc 不能獲取合約metadata數據

結論

burrow暫時還不完全兼容truffle

參考文獻

https://linuxize.com/post/how-to-install-node-js-on-centos-7/
https://www.trufflesuite.com/docs/truffle/getting-started/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章