找回密码
 立即注册

扫一扫,登录网站

亚豪娱乐 自媒体 查看内容
  • 2240
  • 0

亚豪娱乐时时彩软件官网:在比特币上发代币的基本原理——omni协议发代币的通俗解释

亚豪娱乐 www.42yxj.com.cn 2018-7-18 16:32

来源: H13116885

0章 引言

最近BCH社区在讨论发token的事,其中omni协议是一个成熟的方案,在BTC上早就实现的,USDT就是使用omni协议实现的代币。本文通俗讲解omni的基本原理。

 

1章 BCH交易中OP_Return信息的基本原理

一笔比特币交易是一个含有输入值和输出值的数据结构,该数据结构植入了将一笔资金从初始点(输入值)转移至目标地址(输出值)的代码信息。

在区块链浏览器中查看是这样的

左边的是一个输入,是发币者的地址;右边是输出,是收币者的地址。

BCH的转账和我们去银行填单汇款很像,汇款单也是要填写汇款人、汇款金额、汇款银行账户、签名、收款人……等等信息。

在上述表格的倒数第2行,即“锁定脚本”可以是一种“备注信息”(请注意,这里是“可以是”),只要是以OP_Return开头的都属于“备注信息”。就像我们使用网银转账可有填写备注一样,这种“备注信息”的“锁定脚本”,即BCH节点来说是不作处理的。我们称这种“备注信息”为OP_Return数据。

但是这种OP_Return数据,都一定会和这笔交易共同存在BCH的区块里的。这句话的意思是:OP_Return数据是受BCH区块链?;さ?,这个数据是不可篡改,不可伪造的。哪怕是你再发一笔交易,填写完全一样的OP_Return信息,但这笔交易的txid肯定是不一样的,BCH区块链是可以识别“信息完全相同的OP_Return数据”是属于哪笔交易,在哪个区块的。这意味着,一笔交易tx,外带一个OP_Return数据,这两个信息就会是在全世界唯一性地存在。即使是在同一区块里,相同的输入地址和输出地址外加相同的OP_Return数据,的两笔交易,因为UTXO不同,交易加OP_Return也可以形成唯一性,在区块内部可以排到顺序。

OP_Return一旦写入了区块链,就相当于有了一个时间戳,哪怕是同一区块里的交易,都因排序不一样,而有不同的时间戳。这句话是什么意思呢?就类似于,今天的人民日报第2版发表了一篇文章,那这篇文章就带有2018年7月18日这个时间戳。如果明天,在人民日报第2版完全相同的地方,又发表了完全一样的文章,但时间戳是不一样的。

下面的这笔交易就是带一个OP_Return备注信息,OP_Retrun一般会在浏览器的输出列出中显示为“地址解析失败”,然后在浏览器的输出脚本部分显示具体的数据。

以上信息就是Omni协议成立的关键。

 

2章 我们来设计一个货币

现在我们来设计一个货币。

设计货币,最重要的就是三个功能,货币的发行,建立账户,和货币的转移。

发行必须有理有据,你不能胡乱发。我们可以约定好,一次性发行,然后永久不增加。也可以约定好按特定的条件来持续增发。只要定义好规则就好。为了方便起见,我们设计一个一次性发行,永久不增加的货币,我们先管它叫TFBC(The First Bticoin cash's token Coin的首字母缩写),发行76亿(全世界人口,一人一个好了)。初次发行,就将所有的币存放到一个账户上。

建立账户就很开户,允许新用户加入到这套货币体系当中来。新开的户,余额是零,然后可以接收币,收到币后可以发送币给别的账户。这个好理解。

货币的转移,或叫支付,是我们使用这个货币的过程。这个过程必须是安全的和让用户可识别的。你不能出现一个人原本是没有币,他却能支付,即这套货币系统需要能识别出哪个账户有币,然后才能支付,也不能支付的总额超过了账户的余额。让用户可识别的就是说,你得让人知道他账户上有多少币,这个不能显示是假的,或者有人造假说自己有多少币,系统得能识别。

有这三个功能,就实现了一套最简化的货币。

我们使用一种中心化的思维来设计的话,就是使用一个账本,形象点说,就是一个excel表格。表格的第1列记录的是账户名字,第二列是账户余额。

货币的发行,就直接在excel表里填写一个账户,随便叫个名字,就叫“闪电”好了,余额是76亿。

新建账户就是在excel表格里增加一行,比如新建一个叫“雷神”的账户,余额为0。

货币的转移,比如“闪电”这个账户要转1亿个币给“雷神”。要完成这个过程只需要修改两个数,第1是将“闪电”的余额改为75亿,将“雷神”的余额改为1亿,就完成了。

为了保证转移过程的安全性,我们会要求记录所有的历史支付记录。这样可以通过所有的历史记录回溯到初始发行的货币量,回溯就是将支付的过程逆过来,原本“闪电”支付给“雷神”1亿,回溯就变成了“雷神”支付给“闪电”1亿。如果回溯的最终结果和发行是一样的,那就可以说明整个支付过程是没有问题。

有了历史记录,我们也可以对所有的账户余额进行回溯,回溯的结果一定的所有的账户余额都为零(除了初始发行的那个账户)。

那如何保证记录历史支付呢?我们可以直接在excel表的第3列开始就作为支付记录,比如“闪电”支付给“雷神”1亿,则在“闪电”的第3列记录“-1亿”,而在“雷神”的第3列上记录“+1亿”。而每个账户的最终余额,就是这些历史记录的加总。这个列数我们假定是无限的,这样就可以记录无限次数的交易了。


如果我们将上述一张excle表,复制到很多台电脑上,然后这些电脑可以同步更新数据,那我们就使用了去中心化的方式来实现这套最简化的货币体系。

但是,如何保证货币的发行和转移是安全的呢?下面我们来讲如何使用Bitcoin Cash区块链来设计一个安全的货币发行和转移系统,即Omni协议。

 

3章 Omni协议

我们从第1章的描述中就可以看到,因为有OP_Return数据的存在,将Bitcoin Cash的区块链里的OP_Return数据提取出来,就是一个非常好的“excel表”,每一次对这张表的修改,都会被记录在区块链里,而这些数据是不可篡改,不可伪造的。按第2章的描述,就可以利用“OP_Return excel表”来设计一个去中心化的货币发行和转移系统。

现在我们来利用BCH区块链来设计一套最简化的货币系统。

首先是初始发行。

我们使用一个BCH钱包来发一笔带自定义OP_Return数据的交易,交易的输入是自己控制私钥的地址A,输出有两个,第一个输出还是地址A,即这笔交易是自己发给自己,第二个输出是一个OP_Retrun数据。这个OP_Return数据写的意思就是“使用地址A当成创世账户,给这个账户注入76亿个TFBC货币”。这笔交易我们记为“铸币交易tx1?!?/span>

因为BCH系统是不会去识别这个OP_Return里的数据的,所有的BCH节点都会直接忽略掉这个数据。那我们给bitcoin cash的节点钱包做一个外挂,这个外挂程序专门用来解析这个OP_Return数据。这个外挂结合上述tx1和这个OP_Return数据,就可以解析出一张excel表格,表格的第一列就是账户“地址A”,第二列就是“余额76亿TFBC”。


因为OP_Return在BCH网络是不会被检验的,可以被随意填写。有没有可能别人也发一笔交易,包含完全相同的OP_Return数据,来伪造我们上面发行的76亿货币呢?答案是不能的,因为他无法伪造tx1,而外挂程序需要结合tx1来解析出这张excel表格。

那么创世交易的的创造者能不能篡改或伪造铸币交易tx1呢,也是不能的,因为创造者可以使用相同的输入和输出,但无法伪造成相同的UTXO,否则就会被BCH网络确定为双花。

在这个新发生的货币体系里,账户是和BCH共用的,新建账户也就是新建一个BCH地址。这个很简单。

转移货币的过程是这样的,第一次转移是从铸币交易往外支付的,比如支付给地址B1亿个币。支付的过程需要使用“铸币地址A”构造一笔BCH交易,输入是地址A,输出之一是地址B,金额为546聪(这是因为BCH网络的防尘设计,如果删掉了这个限制,金额就可以为0),带上矿工费,第二个输出是一个OP_Return,里面的数据写会被解析为“账户A向账户B支付1亿个币”,我们记这笔BCH交易为tx2。

OP_Return里的数据,在BCH网络是不会被处理的,但在上述的BCH的外挂程序里会被解析出来,解析的结果就是更新这张货币的状态表,如下表。


同样的,因为tx2被BCH区块链打包之后,就不可能再被伪造了,除非BCH网络被回滚了。所以这个货币的状态表就无法被伪造了。

只要地址B上有BCH余额可以支付防尘设置和矿工费,就可以给其他地址支付这个货币了,然后外挂程序就会拿这笔交易和OP_Return里的数据,解析更新货币的最新状态表。

以上就是最简化的Omni协议实现的代币的原理,为了更实用性,代币一般会增加很多功能,比如锁定功能,自动化转币功能……

 

4章 Omni协议的现在情况

Omni协议在BTC是已经做好了,在BCH上还没有。USDT就是使用Omni协议设计出来的。

Omni Core就是在BTC上使用Omni协议实现的一个客户端,使用这个客户端就可以在BTC上发币,需要同步区块。

Omni Core下载链接: https://github.com/OmniLayer/omnicore/releases

Omni代币浏览器: https://www.omniexplorer.info/

在BTC上,现在一共有370种代币。下面是这些币的列表,但只有USDT有人在用,其他的都是死币。

https://www.omniexplorer.info/properties/production

在BCH上,我们已经构造了一笔交易,这笔交易就是按照现在的Omni协议手动构造的,等BCH上的Omni协议实现了客户端,将可以解析出一个代币,代号是TFBC,76亿。铸币交易id是这个:

f89794db07acb6812326ef76f781203f77e5712345ac07834cab6adc403a3782

 

5章 结束语

OP_Return可以提供非常非常多的想法,好好利用OP_Return,BCH将大有作为。

发表评论

请先 注册/登录 后参与评论

    回顶部
  • 领克02:锁好车门,总想回头多看你一眼 2019-02-20
  • 门靠门的网红烧饼店杠上了 还为“师徒纠葛”打官司 2019-02-20
  • 游走休闲马德里,做一个阳光收割机 2019-02-19
  • 长治警方破获利用网络平台贩毒案 2019-02-19
  • 上学路上国歌响起   小学生驻足敬礼 2019-02-18
  • 人身险产品遭遇“负面清单” 保险行业迎供给侧改革 2019-02-18
  • 里约奥运门票滞销 目前待售门票超170万 2019-02-17
  • 捷途X70X70S正式下线 将于第3季度上市 2019-02-16
  • 安徽淮北昔日采煤塌陷区 今朝池水养鱼肥 2019-02-15
  • 回复@大雨582:任何人的自由发展都是跟他的能力意愿行动及生成的结果平滑对接的。 2019-02-14
  • 民歌大秀《壮见之南丹篇》浮出水面 不同艺术碰撞 2019-02-14
  • 人民观影团:《东方快车谋杀案》热映 2019-02-13
  • 纳兰性德:谁道破愁须仗酒纳兰 之人 2019-02-13
  • 北京市北京福瑞林肯中心4S店【在线咨询】 2019-02-12
  • The GNU General Public License v3.0 2019-02-11
  • 888| 196| 583| 35| 568| 622| 18| 200| 235| 964|