以太坊研究系列【Mist】

in #ethereum6 years ago (edited)

此文档为个人整理学习使用,部分内容来源于网络,也期待能给你带来益处。

Mist

安装meteor

Chaim:tmp Chaim$ curl https://install.meteor.com/ | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7786    0  7786    0     0   3893      0 --:--:--  0:00:02 --:--:--  2629
Downloading Meteor distribution
######################################################################## 100.0%

Meteor 1.6.0.1 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.

To get started fast:

  $ meteor create ~/my_cool_app
  $ cd ~/my_cool_app
  $ meteor

Or see the docs at:

  docs.meteor.com

安装yarn

Chaim:~ Chaim$ sudo npm install -g yarn
[email protected] /usr/local/lib/node_modules/yarn

更新nodejs

Chaim:~ Chaim$ yarn global add [email protected]
Node version 0.10.36 is not supported, please use Node.js 4.0 or higher.

因为我的nodejs还是0.10,各种不支持,去https://nodejs.org/en/download/下载安装最新版nodejs,直接安装即可。

安装electron

用以下命令总是网络超时:

npm install -g [email protected]

查找其它方法,得到以下方法:

sudo npm install -g cnpm --registry=https://registry.npm.taobao.org

sudo cnpm install -g electron 注:最好注明办版本

gulp

Chaim:~ Chaim$ npm install -g gulp

安装Mist

$ git clone https://github.com/ethereum/mist.git
$ cd mist
$ git submodule update --init
$ yarn

安装很慢,结果如下:

yarn install v1.3.2
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
✨  Done in 12.40s.
✨  Done in 3037.40s.

启动Mist后台程序:

cd mist/interface && meteor --no-release-check

结果如下:

Chaim:interface Chaim$ meteor --no-release-check
[[[[[ ~/Documents/workspace/mist/interface ]]]]]

=> Started proxy.                             
=> Started MongoDB.                           
=> Started your app.                          

=> App running at: http://localhost:3000/
=> Client modified -- refreshing

启动另一终端,执行mist客户端:

Chaim:mist Chaim$ electron . --rpc /Users/Chaim/Documents/workspace/ethPri/geth.ipc 
App threw an error during load
/Users/Chaim/Documents/workspace/mist/main.js:16
import configureReduxStore from './modules/core/store';
^^^^^^
SyntaxError: Unexpected token import
    at createScript (vm.js:53:10)
    at Object.runInThisContext (vm.js:95:10)
    at Module._compile (module.js:543:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at loadApplicationPackage (/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:283:12)
    at Object.<anonymous> (/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:325:5)
    at Object.<anonymous> (/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:361:3)

一直报这个错误,以为是nodejs或者electron版本不对,重新安装几遍和各个版本,还是这样!

查看mist下的README.MD,按里面的执行一下,至少钱包界面是出来了,不过一直在等待,可能是挖矿被我停了吧,重新启动挖矿,能正常看到界面里区块等的变化了!

Chaim:mist Chaim$ yarn dev:electron . --rpc /Users/Chaim/Documents/workspace/ethPri/geth.ipc 
yarn run v1.3.2
$ electron -r babel-register main.js . --rpc /Users/Chaim/Documents/workspace/ethPri/geth.ipc
[2017-12-28T23:34:12.495] [INFO] Settings - Running in production mode: false
[2017-12-28T23:34:12.675] [INFO] EthereumNode - undefined null 'fast'
[2017-12-28T23:34:12.677] [INFO] EthereumNode - Defaults loaded: geth main fast
[2017-12-28T23:34:12.932] [INFO] main - Starting in Mist mode
[2017-12-28T23:34:13.039] [INFO] Db - Creating db: /Users/Chaim/Library/Application Support/Electron/mist.lokidb
[2017-12-28T23:34:13.049] [INFO] Db - Loading db: /Users/Chaim/Library/Application Support/Electron/mist.lokidb
[2017-12-28T23:34:13.055] [INFO] Windows - Creating commonly-used windows
[2017-12-28T23:34:13.056] [INFO] Windows - Create secondary window: loading, owner: notset

界面如下:
title


观察合约

Mist钱包中有个观察合约,可以把在geth环境中测试的合约加进去,这样就不用重新增加合约了

点击新增观察合约,填入合约地址,合约地址通过geth命令行取:

> nbico.address
"0x0b6cdea9367ab0ab655748a00ac04cdf96a075dd"

合约名称:这个就可以自由填了
JSON界面,这个通过geth取到的是带“...”的,没法用,需要去browser-solidity中点Details获取,abi那一块点复制图标,如下图:
title

实际复制的内容如下:

[
    {
        "constant": true,
        "inputs": [],
        "name": "organizer",
        "outputs": [
            {
                "name": "",
                "type": "address"
            }
        ],
        "payable": false,
        "type": "function",
        "stateMutability": "view"
    },
    {
        "constant": false,
        "inputs": [],
        "name": "destory",
        "outputs": [],
        "payable": false,
        "type": "function",
        "stateMutability": "nonpayable"
    },
    {
        "inputs": [],
        "payable": false,
        "type": "constructor",
        "stateMutability": "nonpayable"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "name": "backer",
                "type": "address"
            },
            {
                "indexed": false,
                "name": "amount",
                "type": "uint256"
            },
            {
                "indexed": false,
                "name": "isContribution",
                "type": "bool"
            }
        ],
        "name": "FundTransfer",
        "type": "event"
    }
]

添加成功后,可以存入以太币、看合约事件等。

看合约事件时,发现其中的事件被越来越多的区块确认,这就是说的交易需要多少笔确认吧!
title


参考

http://blog.csdn.net/vinsuan1993/article/details/77144263

http://www.8btc.com/blockchainclassroom7

http://blog.csdn.net/misshqzzz/article/details/77834856

yard与npm
http://blog.csdn.net/mjzhang1993/article/details/70092902

mist公网安装
http://ethfans.org/wikis/%E4%BB%A5%E5%A4%AA%E5%9D%8A%E9%92%B1%E5%8C%85%20Mist%20%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B

***************************************

作者简介


老鱼,从事互联网技术十余年,知名上市公司CTO;炒股十余年,从亏损几十万到略有盈利;顺应创业大潮多次创业,在传统行业和手游行业有所获;研习佛学易理,性格淡泊清净!

欢迎有兴趣的朋友加入微信群和电报群,一起学习探讨,一起实现咱们的小目标!

  • 百分百区块链群,微信扫码后会再显示一个二维码,长按图片“识别图中二维码”加入!


Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63240.82
ETH 3048.64
USDT 1.00
SBD 3.80