如何使用代币本身作为矿工费——EIP965和slp邮资协议
Collect
Share
WeChat
Share With Friends Or Circle Of Friends
代币经济是公链最大的应用,但发送代币需要主网币作为矿工费这点很反人类习惯。以太坊上的Erc20代币需要ETH作为矿工费,比特币上的omni代币需要btc作为矿工费,比特币现金上的slp代币需要BCH作为矿工费。这些都很烦人。
有很多人愿意持有usdt稳定币,但不持有比特币和以太坊。我曾经卖过少量的BTC和ETH给人作为矿工费,原价10块钱,卖20块钱。
我们付人民币,支付美元,从来不需要黄金作为矿工费。为什么付usdt-Erc20代币需要用ETH作为矿工费,烦死。有没有办法让支付代币免于主链币矿工费?
公链为什么一定需要矿工费
在链上发送交易,无论是主网币还是链上代币,都需要支付主网矿工费。这主要是为了防止DDoS,试想如果不需要矿工费,一个人生成两个地址,写个脚本无限相互转账,每天产生几亿几亿的交易数据发到链上,整个区块链不得爆掉啊。
发送链上代币能不能默认不使用主链币作为矿工费呢?为什么没有哪条公链会设计成发送代币使用代币本身作为矿工费?
代币是可以随意生成的,如果一个人发了一个代币,它本身没有价值,然后用这个代币无限在链上发交易,这不也把链给搞死了吗?
有没有办法让发代币不需要主链币作为矿工费,而且还能免于DDoS?
以太坊的解决方案
以太坊是最大的代币经济平台了,目前币圈主流的代币都跑在以太坊,以太坊也最迫切需要一个免ETH发代币的解决方案。
其实理论上,以太坊是非常容易解决这个矿工费的问题的。因为以太坊是一个智能合约平台,只需要写一个专门为代币交易支付ETH矿工费的合约即可解决问题。
以太坊分别有一为代币支付ETH矿工费的提案EIP965(https://github.com/ethereum/EIPs/issues/965),还有一个未分配到EIP代号的提案:ERC865(https://github.com/ethereum/EIPs/issues/865)
以太坊解决这个问题的基本思路是这样的:
设计一个智能合约。
往合约里预存一些ETH。
合约设计一个白名单ERC20代币列表。
在白名单内的ERC20代币,用户发送代币交易时调用该合约。(这需要钱包设计好)
用户的交易需要给合约支付一笔所发送的代币作为矿工费。
合约会给用户发送交易时支付一笔ETH矿工费,这样交易就可以被矿工打包了。
本质上以太坊的免矿工费发代币是设计一个合约商店,让用户使用代币换ETH。
但以太坊的这一解决方法一直没有流行,相反,以太坊普遍采用了中心化的解决方案。
中心化解决方案
交易所其实都解决了这个问题,我们在交易所提任何代币都不需要主链币作为矿工费的,交易所直接帮我们扣代币,然后交易所自己会添加主链币作为矿工费。
比特派作为钱包商,也出过帮用户代付矿工费的解决方案。
中心化的解决办法说白了就是用户用代币换中心化公司的主链币,甚至用户可以用人民币来换。
BCH的解决方案
BCH的代币经济系统slp协议现在开始慢慢进入主流了,也需要解决发代币免使用BCH作为矿工费的问题,以提高用户体验。
BCH开发者提出一个叫slp邮资协议的解决方案。(slp-postage-protocol:https://github.com/simpleledger/slp-specifications/blob/master/slp-postage-protocol.md)
使用slp邮资协议发交易的基本构成如下:
用户使用anyonecanpay发送slp交易,交易输入至少两个:
Input1:用户需要发送的slp币
Input2:空留一个bch输出,留给邮资协议服务商补齐
Input3:一般邮票金额是固定的,如果用户的交易尺寸比较大,就需要贴多张邮票,就需要空留多个Input给邮资协议服务商贴邮票。
交易输出至少三个:
Output1:用户发送的slp币的目标地址
Output2:服务商的收币地址,用户使用slp币支付给邮资协议服务商的邮票
Output3:邮资协议服务商的地址,input2的BCH金额-output3的BCH金额=矿工费。如果有多张邮票,就会有output4这些。
补充一点Anyonecanpay的交易格式知识。
如其名,就是任何人都可以支付的交易。一般交易钱包组装交易时会把所有的输入输出都写好,并把输入的签名写好,然后发送出去。
钱包组装anyonecanpay交易时,允许第一个发送者只组装部分输入并签名和所有输出,并且空缺若输入,或者在脚本上设置满足多少金额的输入后即生效。然后其他钱包在收到这个交易时可以主动添加后续输入并签名,但不能添加输出。然后再广播给矿工打包,矿工可以验证交易是否合法。
有了以上知识就可以描述邮资协议的基本逻辑了:
邮资服务器设立slp代币白名单列表。
在白名单内的slp用户使用anyonecanpay交易格式发送slp代币。
邮资服务器收下一部分代币。
服务器给交易贴邮票,即添加BCH矿工费,追加到用户的交易里。
交易成立,矿工验证并打包。
因为邮资协议是公开的,任何人都可以搭建邮资服务器,但需要钱包端的支持。钱包需要用户能够构建anyonecanpay交易,并且默认添加slp矿工费给邮资服务器。
邮资协议是在2019年末提出的,我只看到面包钱包集成了。但随着slp代币的流行,估计其他钱包也会跟随的。
BTC能能使用邮资协议吗?
邮资协议需要BIP70的支持,BIP70是一个支付协议,细节不用关心了。BTC禁用了BIP70,所以BTC不能使用邮资协议。
BTC生态总体思路是场景收缩,集中于实现去中心化和储值。BTC的一个设计理念就是交易格式越来越少,集中做那些交易尺寸小的交易。比如和本文中提到的anyonecanpay格式相对应的还有一个叫anyonecanspend的交易,BTC就禁用了。
像邮资协议这种把交易搞的更复杂,去适应更多的场景的协议,BTC生态都不怎么爱搞,有人提也得不到支持。
有很多人愿意持有usdt稳定币,但不持有比特币和以太坊。我曾经卖过少量的BTC和ETH给人作为矿工费,原价10块钱,卖20块钱。
我们付人民币,支付美元,从来不需要黄金作为矿工费。为什么付usdt-Erc20代币需要用ETH作为矿工费,烦死。有没有办法让支付代币免于主链币矿工费?
公链为什么一定需要矿工费
在链上发送交易,无论是主网币还是链上代币,都需要支付主网矿工费。这主要是为了防止DDoS,试想如果不需要矿工费,一个人生成两个地址,写个脚本无限相互转账,每天产生几亿几亿的交易数据发到链上,整个区块链不得爆掉啊。
发送链上代币能不能默认不使用主链币作为矿工费呢?为什么没有哪条公链会设计成发送代币使用代币本身作为矿工费?
代币是可以随意生成的,如果一个人发了一个代币,它本身没有价值,然后用这个代币无限在链上发交易,这不也把链给搞死了吗?
有没有办法让发代币不需要主链币作为矿工费,而且还能免于DDoS?
以太坊的解决方案
以太坊是最大的代币经济平台了,目前币圈主流的代币都跑在以太坊,以太坊也最迫切需要一个免ETH发代币的解决方案。
其实理论上,以太坊是非常容易解决这个矿工费的问题的。因为以太坊是一个智能合约平台,只需要写一个专门为代币交易支付ETH矿工费的合约即可解决问题。
以太坊分别有一为代币支付ETH矿工费的提案EIP965(https://github.com/ethereum/EIPs/issues/965),还有一个未分配到EIP代号的提案:ERC865(https://github.com/ethereum/EIPs/issues/865)
以太坊解决这个问题的基本思路是这样的:
设计一个智能合约。
往合约里预存一些ETH。
合约设计一个白名单ERC20代币列表。
在白名单内的ERC20代币,用户发送代币交易时调用该合约。(这需要钱包设计好)
用户的交易需要给合约支付一笔所发送的代币作为矿工费。
合约会给用户发送交易时支付一笔ETH矿工费,这样交易就可以被矿工打包了。
本质上以太坊的免矿工费发代币是设计一个合约商店,让用户使用代币换ETH。
但以太坊的这一解决方法一直没有流行,相反,以太坊普遍采用了中心化的解决方案。
中心化解决方案
交易所其实都解决了这个问题,我们在交易所提任何代币都不需要主链币作为矿工费的,交易所直接帮我们扣代币,然后交易所自己会添加主链币作为矿工费。
比特派作为钱包商,也出过帮用户代付矿工费的解决方案。
中心化的解决办法说白了就是用户用代币换中心化公司的主链币,甚至用户可以用人民币来换。
BCH的解决方案
BCH的代币经济系统slp协议现在开始慢慢进入主流了,也需要解决发代币免使用BCH作为矿工费的问题,以提高用户体验。
BCH开发者提出一个叫slp邮资协议的解决方案。(slp-postage-protocol:https://github.com/simpleledger/slp-specifications/blob/master/slp-postage-protocol.md)
使用slp邮资协议发交易的基本构成如下:
用户使用anyonecanpay发送slp交易,交易输入至少两个:
Input1:用户需要发送的slp币
Input2:空留一个bch输出,留给邮资协议服务商补齐
Input3:一般邮票金额是固定的,如果用户的交易尺寸比较大,就需要贴多张邮票,就需要空留多个Input给邮资协议服务商贴邮票。
交易输出至少三个:
Output1:用户发送的slp币的目标地址
Output2:服务商的收币地址,用户使用slp币支付给邮资协议服务商的邮票
Output3:邮资协议服务商的地址,input2的BCH金额-output3的BCH金额=矿工费。如果有多张邮票,就会有output4这些。
补充一点Anyonecanpay的交易格式知识。
如其名,就是任何人都可以支付的交易。一般交易钱包组装交易时会把所有的输入输出都写好,并把输入的签名写好,然后发送出去。
钱包组装anyonecanpay交易时,允许第一个发送者只组装部分输入并签名和所有输出,并且空缺若输入,或者在脚本上设置满足多少金额的输入后即生效。然后其他钱包在收到这个交易时可以主动添加后续输入并签名,但不能添加输出。然后再广播给矿工打包,矿工可以验证交易是否合法。
有了以上知识就可以描述邮资协议的基本逻辑了:
邮资服务器设立slp代币白名单列表。
在白名单内的slp用户使用anyonecanpay交易格式发送slp代币。
邮资服务器收下一部分代币。
服务器给交易贴邮票,即添加BCH矿工费,追加到用户的交易里。
交易成立,矿工验证并打包。
因为邮资协议是公开的,任何人都可以搭建邮资服务器,但需要钱包端的支持。钱包需要用户能够构建anyonecanpay交易,并且默认添加slp矿工费给邮资服务器。
邮资协议是在2019年末提出的,我只看到面包钱包集成了。但随着slp代币的流行,估计其他钱包也会跟随的。
BTC能能使用邮资协议吗?
邮资协议需要BIP70的支持,BIP70是一个支付协议,细节不用关心了。BTC禁用了BIP70,所以BTC不能使用邮资协议。
BTC生态总体思路是场景收缩,集中于实现去中心化和储值。BTC的一个设计理念就是交易格式越来越少,集中做那些交易尺寸小的交易。比如和本文中提到的anyonecanpay格式相对应的还有一个叫anyonecanspend的交易,BTC就禁用了。
像邮资协议这种把交易搞的更复杂,去适应更多的场景的协议,BTC生态都不怎么爱搞,有人提也得不到支持。
Disclaimer: The copyright of this article belongs to the original author and does not represent MyToken(www.mytokencap.com)Opinions and positions; please contact us if you have questions about content
About MyToken:https://www.mytokencap.com/aboutusLink to this article:https://www.mytokencap.com/news/151754.html
Previous:如何轻松通过 ArcBlock 的招聘流程
Related Reading
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum