作者归档:admin

区块链学习(一)Mac系统下搭建基于以太坊的区块链开发环境

区块链的相关知识后补,先从实际的上手,从实例中学习

知识点

分布式数据库并且只能插入和查找

任何人都可以成为节点,保存整个数据库,且数据同步

工作量产生价值,成为币

软件安装

brew tap ethereum/ethereum
brew install ethereum

执行时间较长,需要耐心等待或者梯子

也可以编译安装,请自行百度

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

检查是否安装成功

geth -h

搭建私有链

需要给一个数据存储的文件夹,我们使用

cd ~
mkdir ethereum
cd ethereum

初始化一个创世区块,新建文件

vi genesis.json
{ 
"nonce": "0x0000000000000042", 
"difficulty": "0x020000", 
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
"coinbase": "0x0000000000000000000000000000000000000000", 
"timestamp": "0x00", 
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", 
"gasLimit": "0x4c4b40", 
"config": { 
"chainId": 15, 
"homesteadBlock": 0, 
"eip155Block": 0, 
"eip158Block": 0 
}, 
"alloc": { } 
}

有没有一种普罗米修斯里面造物主的感觉

下面是对这个创世区块的一些解释

mixhash: 与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。. 
nonce: nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。
difficulty: 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度
alloc: 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。
coinbase: 矿工的账号,随便填
timestamp: 设置创世块的时间戳
parentHash: 上一个区块的hash值,因为是创世块,所以这个值是0
extraData: 附加信息,随便填,可以填你的个性信息
gasLimit: 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

然后我们可以准备启动我们的私链

geth --datadir data init genesis.json

运行上面的命令,会读取genesis.json文件,根据其中的内容,将创世区块写入到区块链中。如果看到log信息中含有Successfully wrote genesis state字样,说明初始化成功。其中的数据信息等会保存在我们设置的data目录中。

启动私有链

初始化完成后,就可以通过输入以下命令启动私有链,并打开console了

geth –-datadir data console 2>> geth.log

指定数据目录是data,启动console,并且把console的输出重定向到geth.log文件

这样你可以另外启动一个控制台,使用命令查看console的输出

启动了区块链节点并进入了Javascript Console

这是一个交互式的Javascript执行环境,在这里面可以执行Javascript代码,其中>是命令提示符。在这个环境里也内置了一些用来操作以太坊的Javascript对象,可以直接使用这些对象。这些对象主要包括:

eth:包含一些跟操作区块链相关的方法 
net:包含以下查看p2p网络状态的方法 
admin:包含一些与管理节点相关的方法 
miner:包含启动&停止挖矿的一些方法 
personal:主要包含一些管理账户的方法 
txpool:包含一些查看交易内存池的方法 
web3:包含了以上对象,还包含一些单位换算的方法

基本玩法

查看&创建账户

>eth.accounts
[ ]

目前还没有账户,下面开始创建,参数即是密钥

>personal.newAccount('password')
"0x2b661b5b692de27578e6fb199b4ae2714ff24047"

查询余额

>eth.getBalance(eth.accounts[0])
0

注意在console里也是可以用tab键自动补全的

启动&停止挖矿

miner.start(10)

其中参数表示挖矿使用的线程数。

第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。

如果想停止挖矿,并且进度已经达到100%之后,可以在js console中输入

miner.stop()

挖到的区块会奖励币,是按wei的单位,wei是以太币的最小单位,1个以太币=10的18次方个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币

>eth.getBalance(eth.accounts[0])
2.31e+21
>web3.fromWei(eth.getBalance(eth.accounts[0]),'ether') 
2310

可以设置矿工的账户

>miner.setEtherbase(eth.accounts[1])
true
>eth.coinbase

返回矿工的账户

转账

#为账户设置别名,方便命令输入
user1=eth.accounts[0]
user2=eth.accounts[1]
#查看区块高度,现在为0
eth.blockNumber
#转账测试,首先解锁账号user1
#命令运行后要求输入解锁密码,直接回车,默认账号锁定密码为空
也就是调用newAccount时候传的参数
返回true成功
personal.unlockAccount(user1)
#从user1向user2转账3个以太币
#命令运行后,提交交易立马回出发挖矿
eth.sendTransaction({from:user1,to:user2,value:web3.toWei(3,"ether")})

 

发现还没转过去,此时交易已经提交到区块链,但还未被处理,这可以通过查看txpool来验证:

>txpool.status 
{
     pending: 1,
     queued: 0 
}

#挖矿测试
#geth启动后,自动启动挖矿,这时运行miner.start(),返回为null 无交易的时候#不挖矿,当有交易时自动会触发挖矿流程

#我们可以先停止挖矿
miner.stop()

然后发现交易已经完成

查看交易和区块

可以通过区块号查看区块

> eth.getBlock(66)
{
 difficulty: 135266,
 extraData: "0xd783010802846765746886676f312e31308664617277696e",
 gasLimit: 3350537,
 gasUsed: 0,
 hash: "0x265dfcc0649bf6240812256b2b9b4e3ae48d51fd8e43e25329ac111556eacdc8",
 logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
 miner: "0x4a3b0216e1644c1bbabda527a6da7fc5d178b58f",
 mixHash: "0xaf755722f62cac9b483d3437dbc795f2d3a02e28ec03d39d8ecbb6012906263c",
 nonce: "0x3cd80f6ec5c2f3e9",
 number: 66,
 parentHash: "0x099776a52223b892d13266bb3aec3cc04c455dc797185f0b3300d39f9fc0a8ec",
 receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
 sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
 size: 535,
 stateRoot: "0x0c9feec5a201c8c98618331aecbfd2d4d93da1c6064abd0c41ae649fc08d8d06",
 timestamp: 1520391527,
 totalDifficulty: 8919666,
 transactions: [],
 transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
 uncles: []
}

或者通过交易hash查看交易,交易hash就是在sendTransaction的时候,会返回的一串

> amount = web3.toWei(10,'ether')
"10000000000000000000"
> eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})
INFO [03-07|11:13:11] Submitted transaction fullhash=0x1b21bba16dd79b659c83594b0c41de42debb2738b447f6b24e133d51149ae2a6 recipient=0x46B24d04105551498587e3C6CE2c3341d5988938
"0x1b21bba16dd79b659c83594b0c41de42debb2738b447f6b24e133d51149ae2a6"
>eth.getTransaction("0x1b21bba16dd79b659c83594b0c41de42debb2738b447f6b24e133d51149ae2a6")
{
 blockHash: "0x1cb368a27cc23c786ff5cdf7cd4351d48f4c8e8aea2e084a5e9d7c480449c79a",
 blockNumber: 463,
 from: "0x4a3b0216e1644c1bbabda527a6da7fc5d178b58f",
 gas: 90000,
 gasPrice: 18000000000,
 hash: "0x1b21bba16dd79b659c83594b0c41de42debb2738b447f6b24e133d51149ae2a6",
 input: "0x",
 nonce: 0,
 r: "0x31d22686e0d408a16497becf6d47fbfdffe6692d91727e5b7ed3d73ede9e66ea",
 s: "0x7ff7c14a20991e2dfdb813c2237b08a5611c8c8cb3c2dcb03a55ed282ce4d9c3",
 to: "0x46b24d04105551498587e3c6ce2c3341d5988938",
 transactionIndex: 0,
 v: "0x38",
 value: 10000000000000000000
}

除夕夜忆故人

此刻我爸爸,大姑姑,小姑姑在团年饭桌上聊天聊得热火朝天,过去二十年的恩恩怨怨在我奶奶去世后的新年第一天都沉浸在了酒里话里
人有三次逝去,一次是呼吸的停止,一次是身体的消失,最后一次是最后一个记得ta的人把ta忘记。。。
最后奶奶弥留之际心心念念的可能是我爸爸给她买的二手洗衣机,怕她“快走了”用新的浪费
也许是赌气出走,十年没有见面的女儿
又或者是我和我表哥表姐约了快一年回常德见奶奶,才约到在医院见到了我奶奶的却是最后一面
也许是我爸爸蒸的那一碗好吃的蒸蛋
也许是和我妈妈几十年的恩恩怨怨
这一切的一切,都随着一个人的逝去而烟消云散
在这辞旧迎新的一天夜里,我们开始怀念她
我的奶奶出生在一个不平凡的年代,1935年,她小时候的事情,我知道得不多,只是小时候断断续续地从长辈们的口中知道,她的家里是地主家,曾经有过很多土地,生活过得不错,在那个不远的桃江县城。
后来她和我的爷爷走到了一起,可惜我的爷爷英年早逝,她从36岁起,就带着4个孩子开始了蹉跎的一生,然后还要遭遇到小儿子的病故。
从我记事起,奶奶就是一个年老的样子,直到我今天看到墓碑上她和我爷爷年轻时候的样子,我觉得十分温暖和感动,几十年的思念,他们终于又走到了一起。
奶奶的擂茶
小时候的记忆,都是周末和假期在奶奶家度过的,过年放花炮,夏天擂擂茶,直到去年我出差经过常德,奶奶还专门给我做了擂茶,送到车上。
步行到火车站
初中的时候,有一次约我去健步走,我们俩从常德东门走到火车站,然后又走到柳叶湖,那是我第一次走那么远的路,我已经记不得我们当时聊了些什么,只记得我们那天很开心,在新修的火车站照了很多照片
去北京
高三的时候,奶奶和我妈妈参加了夕阳红旅行团,去到了北京,他们老一辈人梦想的地方。看天安门,逛王府井,还登上了长城,在好汉碑合影留恋。可惜我后来到北京这么多年,她都没有机会再来北京玩一次。
守候老家
我的奶奶在我们几个孩子都读大学之后,常德的老家变得越来越冷清,可是她不愿意去其他地方,就希望待在老地方,守候着老家,还好她盼来了我上北京的大学,留在北京工作,结婚,生子。
饭桌上,我爸爸对两个妹妹说从今以后,我不要求你们,随便你们回不回来
大姑姑说,我没有妈了,就像没有家了一样,但是我希望我以后回常德,希望有口饭吃,就像之前奶奶在的时候一样,她招呼一声,我们三姊妹就会在一起。
是啊,爸妈在哪里,哪里就是家
写下这些文字,是为了纪念我的奶奶,一位老人,一位故人,就像《寻梦环游记》里面写的一样,人一辈子走过,希望有人能够记得她,不会忘记她,也不枉来过一辈子。
愿你再来人间 轰轰烈烈一辈子
.

2017年的总结

1月4日 净耀法师来访
1月10日去日本
1月21日 年会
1月28 过年
2月6日 开年红包
2月11日 惠州 佛宇山寺
2月14 深圳 戴鹏
2月17 新加坡 菩提阁
2月25 泰国僧王
2月26日 龙泉寺
3月1日 深圳 心田科技
3月12日 联合国开会
3月20日-31日 智慧之旅
4月13日 开始看新办公室
4月15日 任斐回国
4月19日 安虎生来访
4月22日 五台山
5月5日 佛诞节
5月9日 斯里兰卡
6月2日 香送
6月9日 北航项目
6月10日 为爱行走
6月11日 第三次美国之行
6月15日 加拿大
7月6日 能智法师
7月15日 赴上海
8月16日 赴上海
8月20日 武汉
8月28日 赴上海
8月30日 哈尔滨阿城 金灵寺
9月16日 赴上海
9月20日 娄底
10月10日 杭州 西蠡谷
10月15日 赴上海
11月7日 云南
11月11日 不合作
11月22日 展会
12月1日 重启
12月27日 搬家
12月31日 烟台

 

2017年上半年很踏实,下半年用新学的词叫日了狗了

小菩提说,好在不是被狗日了,2018年,新的开始,加油吧~!

十月一号

过去的一年,201610-201710

去过:

台湾两次

新加坡一次

美国三次

加拿大一次

日本一次

印度尼泊尔一次

斯里兰卡一次

公司:

从520到305

1000 到 6500

国内n个省市

n个寺院

收获很多

海宝一枚

世界很大,等着你们去发现

科学是什么

物理规律是恒定不变的吗?

黑洞的形式是怎样的呢?

光子是唯一没有质量的吗?

光速是三维生物的极限吗?

高维意识控制着三维的人体,意识没有质量,形状,不受时间和空间的限制

五月天

逝水比喻时光荏苒

终于我们不再为了生命狂欢,为爱情狂乱

盛夏光年,一天一天更灿烂

又到一年的五月

阳光 夏天

自转公转,如同诗一般

让天空解释着蔚蓝,落花铺成一片红色地毯

期待更加精彩的未来

 

小程序啊小程序

1.小程序的入口是哪里

小程序在微信内没有入口入口是二维码。

这意味着开发者还需要强大的推广能力而且是落地推广能力这让小程序承载的更偏向于O2O模式而非线上导流。

2.会不会有小程序商店

不可能有

张小龙说微信团队从开始就没有做小程序分发的想法小程序一定是没有中心入口、去中心化,“同理分类、排行、推荐的模式在小程序里也是不存在的。因为小程序不存在下载过程所以不需要商店用户查找和搜索的需求会另外解决。

3.订阅关系的问题

小程序没有订阅关系。

张小龙说做小程序不能以收获粉丝为目的小程序没有粉丝数只有访问量的数据。

4.小程序能不能推送消息

答案是不能。

张小龙说如果小程序能推送消息就意味着用户访问的每个网站都推送消息用户会崩溃。但小程序将保留有限的推送能力如果用户确认希望收到某些推送通知那么微信会给商户提供有限的推送能力。

5.小程序能分享么

肯定不能分享到朋友圈但是可以分享到聊天和微信群内。

6.小程序能不能做游戏

现在不能。

7.小程序能被搜索到么

用户能搜索到小程序同时小程序提供的很多服务也是线上的。但微信团队会极力限制这个搜索能力不希望它被滥用。

8.小程序和公众号的关系

小程序和公众号没有任何关系彼此独立。

但很多公众号和小程序可能是同一个企业开发的会存在某种关联比如在公众号里目前用户能看到同一个企业还做了哪些小程序反之亦然小程序和公众号之间可以互相跳转。

9.微信会不会提示线下店面

目前微信会进行轻量的提示让用户感知到附近有哪些店铺提供小程序。

10.小程序什么时候能用

19日正式上线小程序所有微信用户都能够使用。

张小龙说这个时间点1227日晚上才和微信团队商量好这个时间点也是微信提出应用号小程序前身一周年的纪念。

没有入口没有应用商店没有订阅关系也不能分享到朋友圈。。。即用即走,微信很大胆,很有野心啊

整理硬盘

以前总是喜欢把所有东西都保存好,整理分类

最近发现越来越不喜欢存东西了,包括照片和聊天记录

其实记忆里的东西才是最美好的,不是吗?