区块链去中心化是历史的倒退

“它是下一代互联网,它将重新改变世界”区块链,这个概念自2008提出到现在已经有10年的时间了,在这10年里,它到经过了怎么样的发展?怎么样的改变了世界呢?目前主要的区块链项目有比特币,以太坊和一些雷声大雨点小的区块链应用EOS,ADA,XMR等,再加上一些以太猫,莱茨狗等和一些空气币,目前真的很难找到特别有影响能真正改变世界的应用。不过话说回来,它已经改变世界了,有多少次财富再分配,产生了多少一夜暴富的奇迹,截至发文时有3000多个在交易币种,总市值近¥16439亿,大概325个交易所,每天成交额近千亿。根据IT桔子上面显示,国内关于数字货币的项目有523个,区块链基础技术55个,区块链应用技术161个,区块链行业应用813个,区块链媒体及社区176个。这只是在国内,国外还有多少声称能改造各行各业的白皮书,产生了多少个区块链公司?

中国有句古话“天下大势,分久必合,合久必分”。纵观人类社会发展,从一个一个母系/父系氏族,聚集成部落,再聚集成小国,再合并成大的国家,大国中产生的一些矛盾冲突又分裂,经过一段时间的发展最后又合并成大的国家,直到今天为止我们还享受着大国带给我们的红利。大国不单单是地域面积是大国,而是建立再各种资源集中调度,分工协作的基础上,形成的一个高效庞大的社会体系。

拿区块链想象成一个国家,突然要去中心化,去掉所有的职业分工,去掉国王,去掉军队,去掉工人,去掉农民;其中有一个人想买点粮食,然后对所有人公开招标要买100斤小麦,公开招标,谁先种出来,我先买谁的,然后所有人都去种地,其中有人运气好,刚好那段时间气候好,就比其他人都提前收获了100斤小麦,然后就买给那个人了;其他人的小麦还没成熟,还在地里长着呢,但是都没有用了,这时大家有有人要100斤玉米,然后大家都把地里的小麦都毁掉,然后都去种玉米。这个去中心化的国家,就这样一直这样进行着。后来有一些人就商量着,我们自己种很难第一个种出来,还不如大家把地合起来一块种,形成一个组人多力量大,第一个种出来的概率大的多,获得的收入由组长安排给大家按劳动力平分(矿池)。于此同时还有一些农业学家出身的人,他们在种地的同时还不断的改良着土壤,化肥,种子,后来通过杂交等技术产生的新品种,产量和生长速度比其他人的快10000倍(ASIC矿机),后来的订单几乎都被这些农业学家承包了。其他人老是抢不到订单,就不愿意了,说不公平,提出要环保,要非转基因,想把那些农业学家踢出去,农业学家当然不愿意,再不停的改良突破其他人的限制,一直相互博弈者。

想象一下,一个这样的国家社会,效率是何等的底下,资源是多么的浪费。就在这么一个去中心化的社会里,又自然的演化出小中心,专业化分工, 然后农业学家和小组长合作,后面又形成一个更大的中心,最后就形成了蒋宋孔陈四大家族集团,控制着这个国家的所有粮食生产,最后他们四大家族串通一起,哄抬粮价,最后就慢慢控制了这个国家,又形成一个新的中央集权国家。

 

世界各国的货币发展都经历类似的发展,从物物交换,到某一种特定等价物作为交换中介,再到用贝克,珍珠,石头,骨头作为货币,再到稀有金属作为货币,再到后来的铸币,再到纸币,再到现在的移动支付。不同的国家,不同的肤色,不同的人种,不同的地里位置,都经历的类似的货币发展过程,纵观货币的发展史,我们不难发现,货币发展的方向一直是”方便快捷”,随着人类认知和技术的发展,每一次货币的发展都是基于当时的技术让货币更加方便携带和容易交换。

我们再来看一下,目前市值¥8,597亿声称要颠覆所有传统货币的比特币,截至发文时54万多个区块,占有存储空间177G,这个是数据还不包括交易所内交易的数据,那个数据量要比这个大的多,如果加上翻倍不止,我们现在的手机一般是64G居多,现在一个普通256G优盘的价格大概是260左右,不考虑国内防火墙等因素,按照5Mb/s的速度同步完所有区块需要10个多小时,按BTC10分钟产生一个区块,一笔交易确认成功的时间需要0~10分钟才能完成,这两个问题,以目前的技术一时半会是不可能解决的。 当然说的这些都是它的缺点,我们来说是BTC的优点,去中心化,我们不需要银行和中心,自己就可以进行发起交易,但是我们需要先下载btc客户端和这个巨量的历史交易数据;不可篡改,因为区块链的天然特性,所有产生的交易都只能查看,不能修改,一旦交易发错将没法修改或撤销; 匿名化,一旦被盗或者丢失,无从查起,无法找回。无国界,跨国汇款往往会经过层层的外汇管制机构的把关和审核,不仅会产生高额的手续费,交易会被记录在案。BTC完全避免了这些问题,相对简单的转账,没有监管没有记录。匿名化和无国界跨境性是BTC能发展到现在最重要的原因。

BTC目前的特性满足不了货币继续向更加方便携带和容易交换的条件,区块链的去中心化特性,不符合社会的发展规律,可以说是历史的倒退或者说是分分合合种一小段时间的分。一项新技术从产生到工业应用乃至改变世界,不光需要技术本身的成熟和完善,还需要周边环境和各种配套设施的完善, 包括政策,资金,科技技术储备,人才储备,人们的认知等因素缺一不可,目前相关的依赖根本不成熟并且一时半会也成熟不了,或者说有些条件根本就不符合。

凡事存在,即有它存在的理由,从2008年中本聪提出区块链的概念,到2010年第一笔比特币和实物交易,2011~2014年:对比特币的质疑以及对区块链技术的关注,2016-2017年:区块链成为热门话题,业界开始进行深入验证与探索区块链在各行业的应用,2018年后半年,回归理性。这中间有各种各样的参与者,从最早的极客,用暗网交易非法军火和毒品交易的不发份子,到后来的以李笑来“老师”为首的割韭菜人,投机的金融机构,相信区块链能改变时间的创业者,梦想一夜暴富的我等韭菜,再到后来的大妈。共同构成了这纷繁复杂变化多样的区块链用户群。因为有各种利益群体的存在,它不会像郁金香泡沫那样一下子破灭,也不会像16~17年那样疯狂膨胀。也许会有一个能解决某个具体问题的区块链应用产生,也许慢慢淡出人们的视野,让我等吃瓜群众持续观望和见证。

什么是区块链?

百度百科的解释,“区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。“,说了跟没说一样,还是不知区块链是啥东西。

用人话来说“区块链可以简单理解为一个数据库,这个数据库有两个特点,一个区块和链,一个是分布式,区块就是一个存储单元用来存放东西,链就是通过加密算法把区块链接起来,分布式就是跟这个区块有关系的个体都有完全一模一样的内容。“

举一个例子,能更容易理解,假如,小明,小红,小强,组成一个区块链网络,小明借给小强100元,把小强的欠条再复制两份同样的欠条,把原始欠条放在1号保险柜里锁上,再把钥匙放在2号保险柜里,然后把复制的两个欠条分别给小强和小红,他们3个人中超过50%的人同意以后,就确认这个借钱有效,小强和小红把各种拿到的欠条锁再自家1号保险柜了并锁上,然后把钥匙放在自家的2号保险柜了,这样一个交易就完成过了。再小红借给小强100元,同样是把欠条分给其他两人,然后各自锁在自家的2号保险柜,并把钥匙放在3号保险柜。这样以此类推,每次交易都把证据发给所有人,都把证据所在自家的保险柜,并把钥匙放在下一个保险柜里。保险柜是透明的,可以随时看到里边的内容,但是钥匙是在下一个号码的保险柜里,想销毁或者修改欠条都是不行的,除非把后面的所有保险柜都打开才行。小强如果想赖账,需要把所有人家里的保险柜都打开销毁才行。

什么是中心化什么是去中心化?

我们还接着刚才的例子,”小明和小强,一块去找村长,当着村长的面,小明把钱给小强,小强和小明确认以后,把欠条给村长,村长保存在村委的大保险柜里。“,村长在这里就是中心,这就是一个中心的化的交易。

小明,小强,小红每个人都可以自己发起叫,网络确认以后就生效了,不需要村长这个中心节点。这就是去中心化的交易。

区块链的特点:

1、去中心化

由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

2、开放性

系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

3、自治性

区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

4、信息不可篡改

一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

5、匿名性

由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方自己产生信任,对信用的累积非常有帮助。

区块链的缺点:

1.不可篡改、撤销

这个既是优点也是缺点,在区块链里没有后悔药,你对区块链的数据变动几乎无能为力,主要体现在:如果转账地址填错,会直接造成永久损失且无法撤销;如果丢失密钥也一样会造成永久损失无法挽回。而现实中如果你银行卡丢了或者密码忘记了,还能到银行营业点处理,你的钱还在。

2.交易账本必须公开

区块链是分布式,在公有链上,等于每个人手上都有一份完整账本,并且由于区块链计算余额、验证交易有效性等等都需要追溯每一笔账,因此交易数据都是公开透明的,如果我知道某个人的账户,我就能知道他的所有财富和每一笔交易,没有隐私可言。

3.当数据越大伴随的性能问题

就像前面说的,每个人都有一份完整账本,并且有时需要追溯每一笔记录,因此随着时间推进,交易数据超大的时候,就会有性能问题,如第一次使用需要下载历史上所有交易记录才能正常工作,每次交易为了验证你确实拥有足够的钱而需要追溯历史每一笔交易来计算余额。虽然可以通过一些技术手段(如索引)来缓解性能问题,但问题还是明显存在的。

4.区块链的延迟性

区块链的交易是存在延迟性的,拿比特币举例,当前产生的交易的有效性受网络传输影响,因为要被网络上大多数节点得知这笔交易,还要等到下一个记账周期(比特币控制在10分钟左右),也就是要被大多数节点认可这笔交易。还受一个小概率事件影响,就是当网络上同时有2个或以上节点竞争到记账权力,那么在网络中就会产生2个或以上的区块链分支,这时候到底那个分支记录的数据是有效的,则要再等下一个记账周期,最终由最长的区块链分支来决定。因此区块链的交易数据是有延迟性的。

以太坊客户端Geth命令用法-参数详解

Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具。
熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册。 本文主要是对geth help的翻译,基于最新的geth 1.7.3-stable版本。

命令用法

geth [选项] 命令 [命令选项] [参数…]

版本

1.7.3-stable

命令

account    管理账户
attach     启动交互式JavaScript环境(连接到节点)
bug        上报bug Issues
console    启动交互式JavaScript环境
copydb     从文件夹创建本地链
dump       Dump(分析)一个特定的块存储
dumpconfig 显示配置值
export     导出区块链到文件
import     导入一个区块链文件
init       启动并初始化一个新的创世纪块
js         执行指定的JavaScript文件(多个)
license    显示许可信息
makecache  生成ethash验证缓存(用于测试)
makedag    生成ethash 挖矿DAG(用于测试)
monitor    监控和可视化节点指标
removedb   删除区块链和状态数据库
version    打印版本号
wallet     管理Ethereum预售钱包
help,h     显示一个命令或帮助一个命令列表

ETHEREUM选项:

--config value          TOML 配置文件
--datadir “xxx”         数据库和keystore密钥的数据目录
--keystore              keystore存放目录(默认在datadir内)
--nousb                 禁用监控和管理USB硬件钱包
--networkid value       网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)
--testnet               Ropsten网络:预先配置的POW(proof-of-work)测试网络
--rinkeby               Rinkeby网络: 预先配置的POA(proof-of-authority)测试网络
--syncmode "fast"       同步模式 ("fast", "full", or "light")
--ethstats value        上报ethstats service  URL (nodename:secret@host:port)
--identity value        自定义节点名
--lightserv value       允许LES请求时间最大百分比(090)(默认值:0) 
--lightpeers value      最大LES client peers数量(默认值:20)
--lightkdf              在KDF强度消费时降低key-derivation RAM&CPU使用

开发者(模式)选项:

--dev               使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿。
--dev.period value  开发者模式下挖矿周期 (0 = 仅在交易时) (默认: 0)

ETHASH 选项:

--ethash.cachedir                        ethash验证缓存目录(默认 = datadir目录内)
--ethash.cachesinmem value               在内存保存的最近的ethash缓存个数  (每个缓存16MB ) (默认: 2)
--ethash.cachesondisk value              在磁盘保存的最近的ethash缓存个数 (每个缓存16MB) (默认: 3)
--ethash.dagdir ""                       存ethash DAGs目录 (默认 = 用户hom目录)
--ethash.dagsinmem value                 在内存保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 1)
--ethash.dagsondisk value                在磁盘保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 2)

交易池选项:

--txpool.nolocals            为本地提交交易禁用价格豁免
--txpool.journal value       本地交易的磁盘日志:用于节点重启 (默认: "transactions.rlp")
--txpool.rejournal value     重新生成本地交易日志的时间间隔 (默认: 1小时)
--txpool.pricelimit value    加入交易池的最小的gas价格限制(默认: 1)
--txpool.pricebump value     价格波动百分比(相对之前已有交易) (默认: 10)
--txpool.accountslots value  每个帐户保证可执行的最少交易槽数量  (默认: 16)
--txpool.globalslots value   所有帐户可执行的最大交易槽数量 (默认: 4096)
--txpool.accountqueue value  每个帐户允许的最多非可执行交易槽数量 (默认: 64)
--txpool.globalqueue value   所有帐户非可执行交易最大槽数量  (默认: 1024)
--txpool.lifetime value      非可执行交易最大入队时间(默认: 3小时)

性能调优的选项:

--cache value                分配给内部缓存的内存MB数量,缓存值(最低16 mb /数据库强制要求)(默认:128)
--trie-cache-gens value      保持在内存中产生的trie node数量(默认:120)

帐户选项:

--unlock value              需解锁账户用逗号分隔
--password value            用于非交互式密码输入的密码文件

API和控制台选项:

--rpc                       启用HTTP-RPC服务器
--rpcaddr value             HTTP-RPC服务器接口地址(默认值:“localhost”)
--rpcport value             HTTP-RPC服务器监听端口(默认值:8545)
--rpcapi value              基于HTTP-RPC接口提供的API
--ws                        启用WS-RPC服务器
--wsaddr value              WS-RPC服务器监听接口地址(默认值:“localhost”)
--wsport value              WS-RPC服务器监听端口(默认值:8546)
--wsapi  value              基于WS-RPC的接口提供的API
--wsorigins value           websockets请求允许的源
--ipcdisable                禁用IPC-RPC服务器
--ipcpath                   包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--rpccorsdomain value       允许跨域请求的域名列表(逗号分隔)(浏览器强制)
--jspath loadScript         JavaScript加载脚本的根路径(默认值:“.”)
--exec value                执行JavaScript语句(只能结合console/attach使用)
--preload value             预加载到控制台的JavaScript文件列表(逗号分隔)

网络选项:

--bootnodes value    用于P2P发现引导的enode urls(逗号分隔)(对于light servers用v4+v5代替)
--bootnodesv4 value  用于P2P v4发现引导的enode urls(逗号分隔) (light server, 全节点)
--bootnodesv5 value  用于P2P v5发现引导的enode urls(逗号分隔) (light server, 轻节点)
--port value         网卡监听端口(默认值:30303)
--maxpeers value     最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)
--maxpendpeers value    最大尝试连接的数量(如果设置为0,则将使用默认值)(默认值:0)
--nat value             NAT端口映射机制 (any|none|upnp|pmp|extip:<IP>) (默认: “any”)
--nodiscover            禁用节点发现机制(手动添加节点)
--v5disc                启用实验性的RLPx V5(Topic发现)机制
--nodekey value         P2P节点密钥文件
--nodekeyhex value      十六进制的P2P节点密钥(用于测试)

矿工选项:

--mine                  打开挖矿
--minerthreads value    挖矿使用的CPU线程数量(默认值:8)
--etherbase value       挖矿奖励地址(默认=第一个创建的帐户)(默认值:“0”)
--targetgaslimit value  目标gas限制:设置最低gas限制(低于这个不会被挖?) (默认值:“4712388”)
--gasprice value        挖矿接受交易的最低gas价格
--extradata value       矿工设置的额外块数据(默认=client version)

GAS价格选项:

--gpoblocks value      用于检查gas价格的最近块的个数  (默认: 10)
--gpopercentile value  建议gas价参考最近交易的gas价的百分位数,(默认: 50)

虚拟机的选项:

--vmdebug        记录VM及合约调试信息

日志和调试选项:

--metrics            启用metrics收集和报告
--fakepow            禁用proof-of-work验证
--verbosity value    日志详细度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)
--vmodule value      每个模块详细度:以 <pattern>=<level>的逗号分隔列表 (比如 eth/*=6,p2p=5)
--backtrace value    请求特定日志记录堆栈跟踪 (比如 “block.go:271”)
--debug                     突出显示调用位置日志(文件名及行号)
--pprof                     启用pprof HTTP服务器
--pprofaddr value           pprof HTTP服务器监听接口(默认值:127.0.0.1)
--pprofport value           pprof HTTP服务器监听端口(默认值:6060)
--memprofilerate value      按指定频率打开memory profiling    (默认:524288)
--blockprofilerate value    按指定频率打开block profiling    (默认值:0)
--cpuprofile value          将CPU profile写入指定文件
--trace value               将execution trace写入指定文件

WHISPER实验选项:

--shh                        启用Whisper
--shh.maxmessagesize value   可接受的最大的消息大小 (默认值: 1048576)
--shh.pow value              可接受的最小的POW (默认值: 0.2)

弃用选项:

--fast     开启快速同步
--light    启用轻客户端模式

其他选项:

help, -h    显示帮助


来源:https://learnblockchain.cn/2017/11/29/geth_cmd_options/