【Ethereum 智能合约开发笔记】使用 MetaMask, web3 和 EthJS 呼叫合约

【Ethereum 智能合约开发笔记】使用 MetaMask, web3 和 EthJS 呼叫合约_第1张图片

使用 web3 应该是开发 DApp 必须的,不管要查询 Ethereum 区块链状态、发送交易、呼叫智能合约都可以透过 web3。使用 web3 必须连结到 Ethereum 节点,之前我写了一篇文章介绍使用 Infura 提供的节点。其实常用的 Ethereum 浏览器钱包 — MetaMask 也有提供 web3 provider,用他提供的 provider 初始化 web3,就可以连上 MetaMask 提供的节点。参考以下两篇官方文件,我实作了简单的范例,并记录几个可能碰到的问题。

MetaMask 官方文件:

  1. MetaMask Compatibility Guide
  2. Developing for MetaMask

另外 MetaMask/mascara 提供在不安装 MetaMask 的环境下,使用 MetaMask 提供的 web3。

使用范例

写一个简单的 JavaScript 程式,使用 MetaMask 提供的 web3 provider 来初始化 web3:

var Web3 = require('web3');
// set the provider of web3
if (typeof web3 !== 'undefined') { 
    console.debug(web3.currentProvider);
    web3 = new Web3(web3.currentProvider);
} else {
    alert("No currentProvider for web3");
}

用 browserify 打包:

browserify web3_init.js -o web3_bundle.js

在 HTML file 中执行:


再写个 HTML file 测试看看。希望透过 MetaMask 提供的 web3 取得:

  1. web3 的 API version
  2. 我的 MetaMask account

  
    

Web3 API version

My Account

你可能感兴趣的:(【Ethereum 智能合约开发笔记】使用 MetaMask, web3 和 EthJS 呼叫合约)