能在以太坊上部署的应用有三类:
第一类是金融应用,管理代币,管理合约。包括子货币,金融衍生品,对冲合约,储蓄钱包,遗嘱,甚至一些种类的全面的雇佣合约。
第二类是半金融应用,一半和钱相关,另外一半非金钱的方面,一个完美的例子是为解决计算问题而设的自我强制悬赏。
第三类非金融类用应用,比如在线投票和去中心化治理应用。
金融应用:代币系统
(token有人翻译为令牌,个人觉得不如代币合适)
所有代币系统都在维护余额数据库:
从A中减去X单位并把X单位加到B上,前提条件是
(1)A在交易之前有至少X单位以及
(2)交易被A批准。
实施一个代币系统就是把这样一个逻辑实施到一个合约中去。
代币交易简单合约如下代码:
def send(to, value): #定义交易数量。
if self.storage[from] >= value: #条件是支出者拥有数量大于交易数量。
self.storage[from] = self.storage[from] value #从支出者账户中减去交易数量。
self.storage[to] = self.storage[to] + value #接收者账户中增加交易数量。
交易中以太币还有一个作用是比特币不具备的就是交易者直接使用代币支付交易费。
在合约里维护一个以太币账户以用来为发送者支付交易费,通过收集被用来充当交易费用的内部货币并把它们在一个不断运行的拍卖中拍卖掉,合约不断为该以太币账户注资。(这翻译的简直不是中文,以下是原文)
The way this would be implemented is that the contract would maintain an ether balance with which it would refund(偿还) ether used to pay fees to the sender, and it would refill(补充) this balance by collecting the internal currency units that it takes in fees and reselling them in a constant running auction(竞买).
金融衍生品和价值稳定的货币
金融衍生品非常适合智能合约,可以方便地设定触发条件。而且通过智能合约还能避免金融产品发行者的信任背书问题,毕竟合约内容是公开的,密码学资产可信的以及维护机制也是可控的。但是难点在代币与法币之间的兑换条件的设置,这个就需要一个中心化的接口(比如银行,纳斯达克等)来提供数据。
身份和信誉系统
类似比特币网络中的namecoin,以太坊中也有一个叫ens。其核心机制都是将地址对应到一串好记忆的字符。
def register(name, value):
if !self.storage[name]:
self.storage[name] = value
这样的合约非常简单,就是一个以太坊网络中的可以被添加但不能被修改或移除的数据库。
一个更复杂的名称注册合约将包含允许其他合约查询的“功能条款“,以及一个让一个名称的”拥有者“(即第一个注册者)修改数据或者转让所有权的机制。甚至可以在其上添加信誉和信任网络功能。
去中心化存储
去中心化的存储合约机制,文件拥有者想要在网络上保存文件,首先将文件切分成小块,再对每块数据进行加密,这样构建了一个默克树,同时创建了一个合约,合约通过冗余恢复算法,设置恢复数据的最小块数(类似raid或者erasure coding)。然后把每块文件发往不同的提供存储服务的主机存放。恢复数据时,只要重新下载文件,可以使用微支付通道协议(例如每32k字节支付1萨博)达到最小块数就可以恢复文件。
去中心化自治组织
去中心化自治组织(DAO, decentralized autonomous organization)指组织的决策由一定数量的成员或者股东按照一定形式的权益进行表决。具体可以表现为去中心化自治公司(DAC,decentralized autonomous corporation)更多按照股份进行表决,或者去中心化自治社区(decentralized autonomous community)按照成员资格进行表决。
再来看智能合约中的DAO,简单来讲将代码主干存入合约,合约调用地址指向一个可更改的存储记录,然后将表决结果关联这个存储记录。
[0,i,K,V] 注册索引为i 的对存储地址索引为K 至 v 的内容的更改建议。
[0,i] 注册对建议i 的投票。
[2,i] 如有足够投票则确认建议i。
合约维护多个存储记录、表决表和成员表。当表决通过,启动合约,进行修改,实际上这更像是一笔交易。更复杂的实现是增加内置的选举功能以实现如发送交易,增减成员,甚至提供委任制民主一类的投票代表。
更先进的组织治理机制可能会将来在去中心化组织(DO)实现。
其他应用
1、储蓄钱包
智能合约钱包。
2、农作物保险
针对农民的智能合约,农民不只种地赚钱,还可以启动合约利用类似保险一样应对自然灾害造成的损失。
3、一个去中心化的数据发布器
比如实时统计eth/usd,设定一个允许范围,根据合约参与者对这个值的反馈,确定当前值(大多数人认可的答案)。
4、云计算
网络上的个人计算存储资源可以集中起来形成云计算能力。当然这种资源不适合进程占有资源量比较大,特别是进程间通信的业务。
5、点对点赌博
简单的智能合约,非常适合。
6、预测市场
7、链上去中心化市场
参考内容:
《以太坊白皮书》