最近,学习了区块链知识,基于星云链开发了一个简单的DApp,在这个过程中对区域链这个新事物有所了解,在这里做个学习总结。也算是一个阶段性的结果。
本文不讨论区域链的原理,只说个人的观点。
区块链是一场巨大的实验,而且,还没有成功。如果成功了,区域链将有助于解决一些中心化体系中的一些难题,产生一些新的应用场境,但不可能完全替代中心化的已有的基础设施。
为了激励大家“自愿”建设区域链(公链),币(token)这个事物是必须要有的。而它与法币的联系也是必须要有的。否则区域链是运转不起来了。所以,交易所也是一定会,也必须要存在。这个中心化设施就是区块链实验的关键节点。(这也是为什么大家都疯狂的投资想建设自己的交易所)
PoW是必须的,但大家又都觉得浪费。我觉得,如果区块链实验取得成功,这点浪费不算什么。如果成功,区块链将是新的基础设施。放眼看实体世界,那个基础设施不是投资巨大。人类在实体世界浪费还少了?打一场仗,一天烧一亿美元呢。区块链这点儿浪费不算什么。
智能合约是区块链落地应用的一个很好的发明。它最佳的应用场境是“ 取得不信任的用户的信任 ”。有点绕,举个例子:线上菠菜。大家知道线上菠菜基本都是骗人的。用户完全不知道后台是不是出千了。把后台逻辑用智能合约编写。这样,后台逻辑不仅开源了,而且,用户也知道链上一定运行的是这个代码。大家就会比较信任这个线上菠菜。
区块链引入的帐本具有不可篡改性,这个特点很适合引入到对安全要求较高的环境中。常规的防御篡改的做法,是加密和签名。假设黑客可以拥有私钥,他就可以解开并修改,再重新签名。如果把这些签名放到链上,在区块链到达一定高度后,黑客即使有私钥也已经无法修改了。一些重要的历史数据的签名可以采用这个方法归档在链上。这样数据一旦被修改,就会被发现。
区块链有币,所以,开发“价值转移”属性的Dapp是比较合适的。比如:菠菜。:-) 这样开发者无需考虑兑换问题,而且是准实时到帐,使用者也很方便。
以上是一些优点和可能的应用场景。当前,区块链技术还很粗糙,不足之处是相当多的:
交易速度太慢。这个是致命的问题。后面的一些链都号称想,而且会解决这个问题。目前还没有看到。
区块链有两个面,一面是炒币,一面是技术。大家的热情都在炒币上,这有可能会毁了区块链的建设。
智能合约的开发要考虑的问题比较不同,比如,要考虑块高度。而合约一旦部署,就不可修改。所以,如果有错误,会带来重大损失。
智能合约是跑在VM里的,VM环境所有的安全问题,也相应的带到了智能合约上。如果链的开发团队能力不足,在链上引入安全问题的话,也一样会对链带来灭顶之灾。
钱包,区块链的钱包本质就是私钥。这个钱包与我们本平时使用网上银行,移动支付的使用习惯有所不同。这个不同,会对区块链支付的推广产生阻碍。目前,也有团队提出了钱包新的操作方式,据说,非常自然。拭目以待吧。
除了以太坊,新的支持智能合约的链都在紧张的开发中。缺少文档,缺少外部的开发工具,调试工具。也缺少像Oraclize这样必要的第三方支撑。新的链还是相当的阳春的。去年宣传解决各种问题的链,还在开发过程中。做为基础设施的链还没有好,所谓的杀手级的应用没有出现,也是正常了。
关于安全,
区块链的安全问题还是很严重的。随着大量的资金(价值)进入到了链中,它已经是一个高价值的目标了。
交易所是最大的目标。交易所是中心化的,传统的那套东西。所以,各种攻击手法是一样可以用在交易所上,不会因为它是区块链交易所,而有什么特殊性。
智能合约的编写引入的业务层漏洞。
执行智能合约的VM中的漏洞。由于这里执行的是中间代码,很容易出现问题。
除开智能合约部分,DApp本身的实现,也会有安全问题。特别是DApp如果是Web方式,部署在中心服务器,那么,已有的攻击手法也可以用在它上面的。
关于DApp的开发
DApp是界面 + 智能合约。这里的界面,可以浏览器的WEB,也可以Mobile App,或是桌面应用程序。甚至是command line。DApp没有什么神密之处。
以太坊使用solidity, 星云链使用javascript,但要注意,并不是任意的javascript特性都支持。开发时要参考开发团队发布的文档。
链都是开源的。可以在本地搭建一个私链,在私链上进行开发。本质上链上的API都是RPC接口,对于本地私链,只要把RPC目标设置为127.0.0.1即可。
链都会接一个测试网和主网。线上测试时,可以把合约部署在测试网上。通常测试网都可以免费得到币进行开发测试。这个币是不能进入主网的。
会有一个区块链浏览器的概念。这个浏览器并不是我们通常理解的浏览器。它是区块链的dashboard。使用桌面浏览器访问这个dashboard,可以看到链的运行情况,包括,正在进行的交易,帐号信息。
我的DApp,
http://dapp.enduc.com/
只接入了测试网,没有真币。附送测试用的帐号,含私钥。( Nebulas目前只有本地钱包,还没有类似metamask的钱包。没有真币,大家随意玩玩了 )
右上角选择testnet,语言选择中文。
testnet钱包
链接: https://pan.baidu.com/s/1p0g0UK2_dS3yXCiDKVwhzA 密码: un1x
解锁密码为nebulas1111AaAa
网友评论