风险提示:理性看待区块链,提高风险意识!
不用以太币支付交易费?Vitalik提出支付抽象化方案
首页 > 币界资讯 > 区块链知识 2019-01-22 17:49:11

译者前言:如果想要让更多的人采用区块链应用,那么经济抽象化会是非常重要的一步,此前伯克利大学的区块链研究者提出过相关的解决方案,而对此问题,以太坊创始人vitalik 也是非常关注的,在本文当中,vitalik提出了一种Layer 2的gas支付抽象化方案。

Vitalik-Buterin

(图片来自:Cryptonovosti.com)

以下为译文:

假设用户想要进行一笔ERC20 token转账,但他不想用以太币支付交易费,而是想用ERC20币进行支付,那他该怎么做呢?我们可通过扩展ERC20协议(如下所示),而无需修改基础层协议来做到这一点。我们添加了一个函数submitSignedPayments({to: address, value: uint256, fee: uint256, deadline: uint256, seq: uint256, sig: bytes[65]}[]),其工作原理如下。对于每次提交的付款:

1、设sender = ecrecover(hash(to, value, fee, seq, deadline, self), sig);
2、验证balances[sender] >= value + fee;
3、验证seqs[sender] == seq;
4、验证block.number <= deadline;
5、设balances[sender] -= value + fee;
6、设balances[to] += value;
7、设balances[msg.sender] += fee;
8、设seqs[sender] += 1;

而希望发送ERC20币的用户,可发布提供交易费用的离线消息,然后等到有人在一笔交易中纳入他们的消息。

请注意,发布交易的21000 gas费用可在多个ERC20合约之间进行共享。方法是创建一个接受已签名付款对象列表的中心路由合约,然后根据需要,调用每个ERC20合约的submitSignedPayments及其相关的签名付款。

如果我们将它与账户抽象方案结合到一起,我们可进一步实现抽象化。考虑这样一种抽象方案,其中用户账户是合约,而交易是对账户的调用,msg.sender设置为block.coinbase,我们还假设通过账户抽象,用户可创建排列多笔操作的交易。但是,用户账户不能仅通过交易调用,你还可以让另一个合约调用这个用户账户,以此作为交易的一部分。

用户可发送具有两种操作的一笔交易:(i)向msg.sender发送一些ERC20 token,(ii)执行一些其它任务。然后可以将这种类型的一系列交易放入封装交易当中,该交易支付以太币费用,然后在以太坊链上进行发布。而封装交易的发布者,将收集这些ERC20 token。

对此方案,ethresear.ch社区成员austingriffith评论称:

是的!我喜欢这种东西。几周前,我进行了一部分研究工作!我完全错过了截止日期,但这是很重要的。

看起来,我们应该将签名的消息集成到我们所有新部署到合约当中,以便在将来提供更好的用户体验。

这是我的 GitHub代码库: https://github.com/austintgriffith/native-meta-transactions

下面是相关的文章:https://medium.com/gitcoin/native-meta-transactions-e509d91a8482

至于批量签名消息,我喜欢LimeChain乔治给出的代码:


/**
* @dev executes a transaction only if it is formatted and signed by the owner of this. Anyone can call execute. Nonce introduced as anti replay attack mechanism.
*
* @param target - the contract to be called
* @param value - the value to be sent to the target
* @param data - the data to be sent to be target
* @param dataHashSignature - signed bytes of the keccak256 of target, nonce, value and data keccak256(target, nonce, value, data)
*/

function execute(address[] target, uint256[] value, bytes[] data, bytes[] dataHashSignature) public onlyValidSignature(target, value, data, dataHashSignature) returns (bool) {
// solium-disable-next-line security/no-call-value
for(uint i=0; i< target.length; i++) {
require(target[i].call.value(value[i])(data[i]), 'unsuccesful call');
}
return true;
}

}

你怎么看?

上一篇: 解构智能合约:创造与运行时间代码解析
下一篇: 技术指南:初识链码-链码概念与原理
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥264,723.74
37,091.22 USDT
+0.1%
ETH以太坊
¥14,416.22
2,019.90 USDT
-0.12%
USDT泰达币
¥7.20
1.01 USDT
0%
BNB币安币
¥1,625.40
227.74 USDT
+0.36%
XRP瑞波币
¥4.32
0.60460 USDT
+0.37%
USDC
¥7.14
1.00 USDT
+0.03%
SOLSolana
¥398.85
55.89 USDT
+1.54%
OKBOK币
¥398.61
55.85 USDT
-1.64%
ADA艾达币
¥2.68
0.37580 USDT
-1.16%
DOGE狗狗币
¥0.55160
0.07730 USDT
-1.52%
热搜币种
更多
币种
价格
24H涨跌幅
Terra Classic
¥0.00
9.402E-5 USDT
-18.95%
Gala
¥0.18
0.025374 USDT
-4.66%
dYdX
¥22.58
3.1918 USDT
-0.91%
比特股
¥0.05
0.006964 USDT
+4.28%
PancakeSwap
¥15.52
2.1936 USDT
-2.74%
Conflux
¥1.08
0.1524 USDT
-2.87%
Filecoin
¥31.45
4.4454 USDT
-0.69%
FTX Token
¥29.82
4.2155 USDT
+16.96%
Yield Guild Games
¥2.55
0.3608 USDT
-0.52%
Shiba Inu
¥0.00
8.14E-6 USDT
-2.51%
比特币
¥262,381.44
37091.22 USDT
+0.1%
比原链
¥0.07
0.010011 USDT
-4.38%
最新快讯
更多
汇丰、恒生、渣打、富邦华一四家外资银行入围首批“数字人民币”业务试点名单
2023-11-28 19:06:57
摩根大通和Apollo计划建立代币化“企业主网”
2023-11-28 19:03:57
Nansen2公测版本上线,新增链上数据异动、智能搜索等功能
2023-11-28 18:59:52
西班牙公民需在明年3月底前申报其海外平台上加密货币持仓
2023-11-28 18:53:43
Nansen2已公开测试
2023-11-28 18:53:38
dYdX基金会:主网启动以来超过1645万DYDX被质押
2023-11-28 18:52:07
NicCarter等比特币倡导者发文:比特币挖矿是清洁能源和平衡电网的关键工具
2023-11-28 18:47:58
下载币界网APP