区块广播:

go-ethereum-toy-day1-准备工作

chaozding水手发布在 技术文档
 880  1

缘起

前段时间看了《区块链之新》,解答了很多疑惑,所以对区块链有了新的看法,看过纪录片之后,我对区块链的理解是去中间人,但是后来又看了各种新闻,感觉所谓的去中间人好像也不是那么回事。还有一点看好的就是用于数字ID,不过这东西为什么一定要等区块链出来了才有呢。
至于各种币,我觉得更多的是金钱游戏,反正钱是不可能凭空生出来。
当然,这些认识是很肤浅的,看过纪录片谁都会又一堆看似合理的想法和冲动。
想起之前听过的茶电台How to build blockchain from scratch? - Teahour.fm,一直没时间搞,主要是觉得难吧,现在区块链应用又多起来了,所以想把这个再重新捡起来,好像在投机。

方案

太坊客户端的工程已经很大了,感觉根本无从下手。
所以,参考cryptape/ruby-ethereum: A Ruby implementation of Ethereum.的commit历史来做,使用go语言。
主要的障碍是:

  1. 对区块链和以太坊具体实现原理并不了解->参考论坛贡献的技术文档以及官方的文档。
  2. ruby和go语言没学过,把语言学好了再来写软件显然是不现实的->ruby只要求能看懂代码是做什么的即可,语法细节不管,go语言参考官方文档的入门教程,实现功能即可。
  3. 工作量大->实现ruby-ethereum的功能即可,如果超过45分钟没有解决,考虑需要更换方案以及到论坛寻找帮助。
  4. 放弃半途而废->详细记录驱动开发,帖子/记录之后会放在代码的docs文件夹下。

步骤

编译运行go-ethereum和ruby-ethereum,理解使用方法

本主题由 Linkea 于 2019-02-12 11:18:33 移动
  • 正序
  • 最新
只看帖主楼层直达
  • chaozding 水手 2019-02-13 21:06:02 来自PC沙发

    缘起

    前段时间看了《区块链之新》,解答了很多疑惑,所以对区块链有了新的看法,看过纪录片之后,我对区块链的理解是去中间人,但是后来又看了各种新闻,感觉所谓的去中间人好像也不是那么回事。还有一点看好的就是用于数字ID,不过这东西为什么一定要等区块链出来了才有呢。

    至于各种币,我觉得更多的是金钱游戏,反正钱是不可能凭空生出来。

    当然,这些认识是很肤浅的,看过纪录片谁都会又一堆看似合理的想法和冲动。

    想起之前听过的茶电台How to build blockchain from scratch? - Teahour.fm,一直没时间搞,主要是觉得难吧,现在区块链应用又多起来了,所以想把这个再重新捡起来,好像在投机。

    方案

    太坊客户端的工程已经很大了,感觉根本无从下手。

    所以,参考cryptape/ruby-ethereum: A Ruby implementation of Ethereum.的commit历史来做,使用go语言。

    主要的障碍是:

    1. 对区块链和以太坊具体实现原理并不了解->参考论坛贡献的技术文档以及官方的文档。

    2. ruby和go语言没学过,把语言学好了再来写软件显然是不现实的->ruby只要求能看懂代码是做什么的即可,语法细节不管,go语言参考官方文档的入门教程,实现功能即可。

    3. 工作量大->实现ruby-ethereum的功能即可,如果超过45分钟没有解决,考虑需要更换方案以及到论坛寻找帮助。

    4. 放弃半途而废->详细记录驱动开发,帖子/记录之后会放在代码的docs文件夹下。

    步骤

    编译运行go-ethereum

    以太坊是什么?

    以太坊是一个去中心化的平台,运行智能合约,智能合约其实是一种应用,以程序的方式运行,不停机、无审查(没懂,那想审查不还得审查)、诈骗、第三方接口。

    Go Ethereum可以作为独立的客户端或者嵌入库。

    参考#1 明说(01):从0开始搭建区块链开发环境 - EthCast

    以太坊客户端

    编程语言Solidity

    开发框架Truffle是什么意思?

    geth

    账户是什么?

    账户列表

    账户余额

    当前区块号是什么?

    启动挖矿

    充值到第一个账户?

    转账

    交易确认需要挖矿写入区块链?

    编译参考GitHub的README.md

    Mac参考Installation Instructions for Mac · ethereum/go-ethereum Wiki

    git clone https://github.com/ethereum/go-ethereum

    brew install go

    cd go-ethereum

    make geth

    运行build/bin/geth 启动节点

    vim .zshrc

    export PATH=HOME/bin:HOME/bin:HOME/git/go-ethereum/build/bin:/usr/local/bin:$PATH

    然后就可以运行geth就有效果了

    可执行命令

    没看懂

    geth实例

    以太坊网络

    用户和以太坊网络的交互:

    1. 创建账户

    2. 交易

    3. 部署合约,和合约交互,智能合约是什么

    geth console

    exit

    geth --testnet console

    可编程的Geth节点接口

    私人矿机

    读我大致看了下,没看懂。

    Developers’ Guide · ethereum/go-ethereum Wiki这个是如何贡献代码的教程。

    配置Go环境

    vi .zshrc

    export GOPATH=$HOME/go

    suorce .zshrc

    echo $GOPATH

    mkdir -p $GOPATH/src/github.com/ethereum

    git clone git@github.com:chaozding/go-ethereum.git $GOPATH/src/github.com/ethereum/go-ethereum

    构建可执行程序

    cd $GOPATH/src/github.com/ethereum/go-ethereum

    go install -v ./cmd/geth

    geth会被安装到 $GOPATH/bin/geth

    Git flow

    测试

    Command + Shift + . Mac显示隐藏文件

    go test -v -cpu 4 ./eth -run TestMethod 这是做什么的?

    Metrics and Monitoring · ethereum/go-ethereum Wiki

    这是什么?

    获取栈跟踪

    退出 geth 后台驻留程序

    参考go ethereum - How do you stop a running geth node? - Ethereum Stack Exchange

    killall -HUP geth

    或者

    ps ax | grep geth

    kill -HUP

    好像没效果,杀不死进程,不知道为什么?

    geth --pprof console

    然后可以访问 http://localhost:6060/debug/pprof 查看堆

    访问 http://localhost:6060/debug/pprof/goroutine?debug=2 产生跟踪,用于调试

    geth -port=30300 -verbosity 5 --pprof --pprofport 6060 2>> /tmp/00.glog

    killall -QUIT geth

    贡献

    鼓励’in progress’PRs

    编译运行ruby-ethereum

    一下午都没搞这个,看电影看视频,然后就发散出去了。

    git clone https://github.com/chaozding/ruby-ethereum

    ->《用Go语言构建自己的区块链教程》

登录 账号发表你的看法,还没有账号?立即免费 注册
推荐节点 更多
热帖榜 本周最热本月最热