区块链阅读笔记

不谈比特币,只谈区块链,要谈也就谈一点儿。

区块链—一个数据库,分布式,账本式。
如果高度概括来说,没错就是个数据库而已。但是包装上了系列的定语,形容词,让它炫丽动人。

  • 分布式,你听不懂,换成去中心化。
  • 第三方交易信任担保,你听不懂,换成去中介化。

必须清楚地看到,比特币只是区块链应用的一个成果,“比特币不等
于区块链”。区块链是多种技术的集成,比特币只是区块链多种技术整合
的一种形式,还可以有不同技术的多种组合形式。因此,区块链的发展
必须跳出“比特币区块链”的思维和定式,不必过于追求理想化,转而
脚踏实地、实事求是,注重运用相关技术解决现实世界的实际问题,并
在实践中不断改进和完善,充分发挥区块链的积极作用。

事实上,比特币是想建立一个“乌托邦”显然,,但东方智慧不会参与天下之先。但会寻找道与术的平衡。

有人说:区块链的底层是数学逻辑,中层是哲学思维,顶层是宗教信仰。
数学逻辑是指:基于成熟的后台技术基因(p2p点对点通信,非对称加密,分布式存储)。现在是3.0版本,拥有智能合约
哲学思维是指:共识方面基于拜占庭将军问题。以太坊的Gas的鼓励政策设计也体现着经济学理念。扯蛋一下,如果春秋七国有区块链,强秦绝无机会。区块链下的价值互联网,玩的全是匿名,而目前的互联网,实名制的伎俩下依然信任危机。特么有点儿“灯下黑”的感觉。
宗教信仰是指:思想正确,而且理论自洽。已经写入国家的计划。宗教字眼都有点小,而是时代所趋。

如果,在中层哲学都有了偏差时和线下交易混乱时,那么这个比特币就仅是个“网络游戏”。你玩的再好也是一个ID,你的账户装备再贵重也只是一串加密数字。

发展过程

v1.0

比特币(Bitcoin)
v2.0

以太坊(Ethereum)
v3.0

开源:
超级账本(Hyperledger fabric)
FISCO-BCOS

《中国区块链行业发展报告2018》

摘录:风投钟情的区块链 8 个领域:
挖矿、钱包、虚拟货币、基础设施、底层技术、交易所、相关服务和区块链应用
中国区块链产业链可谓基本成型。

中央网信办第三批区块链信息服务名称及备案号

区块链的优势

重新定义未来商业生态

如果共识是机器处理二进制一定比人类专业,那就相信机器,使用机器。
就像用筷子,球拍,水壶,电灯泡……
但不同的是这个工具是账本,记录一下与你交易的或者与你有关的别人的交易的哪些事儿。后台的保证是一系列的事务,加密和传输等,这也是区块链最大的贡献。
区块链并不是一个新技术也不是一个独立技术,尤其是在当下,结合相关的链条来看:

AI,云计算——-生产力
区块链——生产关系
机器(安全科技),IOT—-生产工具

有人提出BASIC的技术战略:五个首字母分别是区块链、人工智能、安全科技、物联网(IoT)、云计算
事实上在上面的“生产三者”中都体现了,而且,任何两个新技术的组合和碰撞出的火花都是一个新的细分的领域。

你不知道的区块链

  • 可以没有币
  • 可以自己发币
  • 可以私用,场景有联盟链,公用链系统有比特币和以太坊
  • 代码开源,智能合约是一段流程化的动态合同

防黑客的话,使用联盟链或私有链,同时,一笔生意有时效性,那么让链也有保质期监控,变成离线存储。
对于效率性能问题,那么联盟节点的数量设置限制。交易的数量级下降,效率就一定提升。
技术是有边界的,也没有绝对安全的算法。关键看如何使用,最大限度的规避风险。

应用场景

商业新势力

  • 公益监管,阿里第一个上线的项目
  • 精准扶贫,农业溯源
  • 货品,食品,药品溯源,京东也在搞事情
  • 宠物品种或基因溯源
  • 私人资产管理,艺术品买卖,教育治理
  • 垃圾溯源,实名领取免费发放的垃圾袋(具有唯一性码的环保材料)
  • 去除房屋中介的DAPP
  • 协同办工,共写一本书,一个项目等
  • 物流追踪
  • 清分结算
  • 全国性的或者说多区域,流动席位类票务解决方案(铁路席位管理改造)

蚂蚁链的数字物流解决方案

区块链资源整理

解读以太坊黄皮书系列

一共有七章,目前只找到了六章翻译好的。

第一,二,三章

第四章

第五章

第六章

核心交易流程

  1. 一切源于用户A在DAPP工具上生成一个随机数,反正,我们称它为私钥k。通过把它输入ECDSA运算,得出公钥的全文,一般会比私钥长。再通过hash算法(SHA-3)来得出公钥hash,它的后20位则是用户A的账户地址。
  2. 用户A要交易给用户B一个ETH时,填充一个交易结构体tx.目前还是在用户A的DAPP工具中,对tx进行RIP编码,再hash算法(SHA-3)生成摘要,最后签名,签名结果是65位字节长的值(r,s,v)前两者32字节长。签名实质上是使用私钥k对交易摘要进行加密的过程。
  3. 验证节点出场即机器。它拿到原始交易tx和签名结果。
    1. 首先恢复出用户A的公钥q(是通过交易hash和签名计算出来的)
    2. 签名验证即是用公钥q来解密交易,得出账户名(用户A)
    3. 得出的,计算的,或者说恢复的公钥得出的这个账户名,要和原始交易中from的值做为对比。一致说明内容未被篡改。
  4. 交易一旦合法,就要被矿工进行流水线加工,进入区块。这里是有区别对待的,交易中流通的价值高,蕴的鼓励值越高,矿工也不是傻子,所以,高额交易会更快进入到区块。
  5. 当一个区块生成,即要更新世界观。树就是以太坊这个状态机的后台世界了:默克尔树(一个全局的静态树,叶子节点是指向具体数据区块),MPT状态树,其中M是指默克尔树,显示它是个进化的树结构。

给开发者的启示

方兴未艾的市场

回头看马云建立的支付宝,竟然是最没有互联网精神的阶段性物件。但是它引导和启发了市场。
所谓,分久必合,合久必分。去中心化的结果,会再次制造出中心化。
没有一个互联网公司想放弃区块链这个阵地,所以,纷纷出台自己的方案,但纵观各方案,平心而论,现在蚂蚁链,更能吸引到区块链+的客户。原因很多,它更产品化或者说产品线设计合理,概念更明晰,客户引导方面做的更好。相比其它大厂,还属于在炫技和宣传的层面。本来要去中心化,可是对大部分客户都想“开箱即用”的需求下,那么只能依赖基础设施,而蚂蚁链又准备引导市场了,虽是大鳄,但创业公司并非没有机会。因为,技术的透明的,实践是自己的,激励机制是共同的。
即使中心化再次来袭,我们也可以理性分析,首先,市场变化了,中心化的气焰一定是被打压的,暴利的中心不会存在了,其次,区块链的进化,更多出现的是基础设施的中心化,而不再是交易业务中耦合的中心角色。同时,随着业务扩展和交易数量上升时,边界成本不再线性同比上升。

个人感想

作为一个程序员,以前感觉写业务代码的人是低级的,今天做这个,明天写那个,行业积累看似很有价值,一旦换行就隔了山。直到,区块链的出现,让我眼前一亮,事实上,商业的生产关系是海量的需求,让写业务代码的人至少变成一个可以拿链走南闯北的人,努力创作不再是给别人做嫁衣,甚至是参加到价值互联网的基建圈,写入历史。
开发者就是数字世界的建筑师,全栈工程师越来越受重视,拥有更多的话语权。从对生产工具的精通转型到生产关系的设计和营造,这本身就是一种生产力。三个生产概念互相配合,界线划分得当,找准平衡点就会游刃有余。再扯远一点儿,创业公司的目标应该放在器上而不是方案上,因为要知道,整合资源绝对是自己的弱项。

云上git服务器

使用gitosis用户管理

→安装

首先,切换python2来安装
yum install -y python-setuptools 
git clone git://github.com/res0nat0r/gitosis.git 
cd gitosis 
python setup.py install 
然后,修改/user/local/bin/gitosis-三个文件的第一行,python后面加2.7
经过上面的修改,大环境中python版本仍为3.6,而gitosis会自行应用2.7

→环境搭建

本地公钥生成,做为管理的初始公钥
生成公钥命令:ssh-keygen -t rsa
注意生成后把
.pub的结尾,把@后面数字开头或者有_的都去掉,本人直接改成@localhost.
为此,我还去改造了命令提示符,但生成的公钥匙结果依然依赖hostname
https://www.cnblogs.com/xiaofeiIDO/p/8037331.html
并使用

  1. su - gitfarmer
  2. gitosis-init<~/new.pub
上面这条命令2,后台会执行一系列操作,比如生成一个gitosis-admin的仓库,把new.pub中的内容移至仓库的keydir目录中,同时公钥文件名称与仓库中的gitosis.conf里的memebers名一致。 最后,由于公钥匙是gitfarmer用户下生成的,所以,另建立了manage_instance目录,在里面
  1. git clone gitfarmer@127.0.0.1:repositories/gitosis-admin.git
此时,管理已经具备功能而且是在服务端本地来管理,安全分离。

客户端应用

→生成应用者的公钥

https://www.jianshu.com/p/ba6efe6bf60d 一般客户端为window且安装了git bash。下面就是在git bash中生成自己公钥匙的过程。 把id2cvm.pub上传到keydir中,然后,修改gitosis.conf增加你要管理的代码仓库。 然后,git commit. 事实上发现,通过命令行建立的好像并不被git bash接受,最后,还是用了git gui中的工具,生成了默认的id_rsa.pub才有效果。 ssh -Tv gitfarmer@hostname是很好的工具,但有时你发现没有反应这是因为你的服务端并未设置欢迎语录而已,需要看日志中是否22端口已经登录成功。并且要看最后的返回值是否为0来证明测试成功。

→在服务端建立裸仓库来对应客户端

原以为gitosis会代劳这个动作,实践发现需要自己来,有些帖子说的不对。

→客户建立仓库关联,推送代码

本人在git bash中操作系列命令:
mkdir BL_main

cd BL_main

git init

vim readme.md

git add .

git commit -m "first import"

git remote add origin gitfarmer@182.XXX.181.XXX:repositories/BL_YTF_prj.git

git push origin master
最后一条会跳出让你输入服务端登录ssh密码,并且此前在服务端~/respositories/已经建立了相应的裸仓库。

→在客户端多个公钥匙对应多个仓库的管理

在windows下,git bash会找到用户目录下.ssh/config文件来判断,如果你配置了分支,就会根据你请求的@后面值来查找config中的HostName来匹配
$ cat ~/.ssh/config 
HOST mycvm
HostName 182.XXX.181.XXX
User gitfarmerXXX
Port 22
#PreferredAuthentications publickey
IdentityFile C:\Users\user\.ssh\id_rsa

HOST github
HostName github.com
PreferredAuthentications publickey
IdentityFile C:\Users\user\.ssh\id2cvm
上面的mycvm就是你命令中要给出的
ssh -Tv gitfarmer@mycvm
 
如果测试成功,就说明分支判断了,支持多公钥管理

附录

https://blog.csdn.net/harry_haiwei/article/details/77714651 https://www.cnblogs.com/yshyee/p/4288465.html https://www.webyang.net/Html/web/article_257.html 原理指导
把用户gitfarmer加入到sudo组中: https://blog.csdn.net/qq_39290007/article/details/81125750 同一主机多个git ssh公钥配置: https://blog.csdn.net/yigehui12/article/details/89333264

读一本安全的书—-《清单革命-持续,正确,安全地把事情做好》读书笔记

本书的作者是阿图·葛文德,他是2010年《时代周刊》“全球100位最具影响力人物”榜单中的唯一一位医生。他是位外科医生,能握手术刀,妙手著文章。他通过大量的医学案例与研究发现,尽管医学科技愈发昌明高超,医生技能水平日趋完备,却仍不能避免各类医疗差错、误诊误治的发生。例如,有近30%的中风病人、45%的哮喘病人和60%的肺炎病人,未能得到妥善治疗。所以,他发起一项影响深远的行动—即清单革命。

为什么需要清单革命

这虽然是一个医学人士写的著作,文章里面充斥了一些医院救治生命的场景。但是当我读到作者对错误的深刻剖析时,就已经抛弃了试读了几页的心态,而对其奉若至宝,对作者的观点也是深以为是。
首先,错误是分为:无知之错和无能之错的。

人们犯下无知之错是一个人在未正确掌握知识的条件下所发生的错误,而无能之错是尽管掌握了正确的知识,却因未能正确使用而出错。很显然,前者可以被原谅,后者却无法被谅解。
人们犯无能之错的原因有两个:
第一:人并不能把所有的事情都记住。人往往在高压的情况下很容易忘掉一些事情。
第二:记忆和经验会让人麻痹大意。我们凭借自以为熟练的经验和记忆,麻痹大意地跳过了一些基础但重要的步骤。而清单可以帮助我们去避免犯无能之错。
了解到犯错可能是“人之常情”之后,再次“升维”深入论述一下,犯错中的两种情况:事情的复杂性与做事没有责任心。当今社会在技术力量复杂的专业领域里,“复杂性”这一点导致的失败,远比没有责任心所致失败要多得多。当工作的复杂性远超出个人正确并稳定发挥个人技能的范围时,即便最能干的超级专家都无法避免错误的发生。

我们的目标却是持续,正确,安全地把事情做好。
那么就是要进化,既然学会使用和制造工具是人类进化的标志,那么这个工具,是什么呢?系统吗?软件吗?可大可小,为了不限制想象力,我们抽象的称它为“清单”。
同时,管理的入口是基于“不相信”或者说“承认”。承认任何人或者团体做事情不是万能的,不出错的。也不相信每个人都是有责任心的。于是能让人们“于无声之处听惊雷”的反应机制的设计也是“清单”。

进阶到“清单”的应用层

为了清单真正发挥作用,作者总结了几个原则,分别是:
第一,设计要简单高效可测。
第二,执行上要有明确的检查节点。
第三,编制者要在操作-确认和边读边做这两种清单类型中做一个适合具体情况的选择。
第四,清单不能太长。
第五,要不断更新。
事实上,让领域内的资深人员编制是前提,因为,这样会保证专业的术语应用,同时,在实践中接受检验。
执行上上要有明确的检查点是说在执行清单的时候,提前安排某个节点或者某个情况下要使用指定的清单。比方说,你开车的时候,突然仪表盘上的电瓶灯亮了,这个时候你可能要停车,拿汽车手册翻到电瓶仪表灯亮的那章看看接下来该怎么样去处理。仪表灯亮就意味着是一个检查点。要让清单用起来,就要设置这样的检查点,告诉我们什么时候使用这个清单。另外清单要及时更新,清单要使用,必须要不断地进化来符合实际情况。

书中的例子:在医疗界,阿图医生所推行的手术安全核查清单,已演化为一场全球性行动,因为他真的使患者手术医学专用期的病死率由原来的1.5%降低为0.08%,下降了一倍!与之相关的并发症发生率,也降低了四个百分点。每天早晨,当笔者在手术室开始工作时,核查核对已成为一项制度,必须执行。
自己做为一个软件工程师,从软件工程的层面去解析,做的一个个系统,里面有一个个模块,模块中一个个todo list……最后才是一行行代码。开发经验越丰富的人,代码会更健壮,出bug的机率越少。所以,国内大的互联网公司,一线开发人员上岗前一定会学习“老鸟儿们”(经验丰富的人员相对于菜鸟而言的)写的编程规范,同时在coding过程中做到一行代码,十行注释要求,还有的公司在实行结伴编程。颇像汽车拉力比赛中导航员和车手的关系。一个手持清单,一人执行操作。

清单背后的意义

清单本质上体现了外包和可靠,梳理和概括。外包就是指我们把大脑需要记忆的工作,外包给清单。清单的精髓不是罗列注意事项然后去打钩,而是改变你的价值观,任何时刻都要清醒的认识到主角仍是人。事实上它还有多方面的价值,清单在指导人们学习方向也更有帮助,擅长做清单的人,学习中做笔记也一定是高手。很多人不喜欢用清单的执行标准程序,觉得丧失了灵活性,会变得死板,但是恰恰相反,使用精心设计的清单不会让你变得死板,他们会帮助你节约有限的脑力,不让你的大脑被繁杂的检查项目所占据,而是释放出来处理更加困难的问题。这里错用一句老子的“绝学无忧”,可能表达的更好。清单不是一种僵化的教条,而是一个实用的支持体系,使用清单反而会带来最大的灵活性。
本人也推荐一款软件,来实操清单,就是印象笔记。你可以用传统方式使用它,也可以结合日历来做计划安排,分享给团队等等。

“上士闻道,勤而行之”相信那些高效能的人士或行业已经觉醒,从上层到基层都开展了相关的活动。作者的调研来看,美国的航空和建筑业是最为受益于清单的。而医疗行业也正在变革。
当行业践行它时,一定会保障到行业的持续安全生产。
当清单出现在更多人的观念中时,它足够让一个国家有更好的未来。让我们开始清单吧。