主页 > 安卓手机怎么下载imtoken > 干货——以太坊发送交易的九种方式

干货——以太坊发送交易的九种方式

安卓手机怎么下载imtoken 2023-08-18 05:10:39

本文的目的是就用于在以太坊生态系统中发送交易的各种技术、模式和机制提供指导。 随着新技术层出不穷,本文也会相应更新,算是未完待续。

本文将涵盖以下内容:

以太坊交易简介? 以太坊交易介绍:Gas和gasToken? Gas 和 Gas 代币元交易的目的? 元交易订阅已发送? 潜艇交易的反事实例子? 反事实合约实例化零确认交易? 零确认交易批量转账? 基于短信批量转账支付? 基于短信重复订单支付的支付方式? 通过 Oracle 合同减少大宗交易的订阅费用? 通过 Oracle 合约为批量交易节省一次性地址的 gasmultisends?使用一次性地址进行多次支付的背景

以太坊是一个基于账户的系统。 目前有两种类型的账户:普通账户和合约账户。 两个账户都有自己的以太坊地址、交易计数器随机数和余额。 合约账户也有不可变的代码和相应的存储空间。 这是一篇介绍这些基本概念的好文章。

以太坊交易包含以下关键字段:

Nonce,即交易计数器,是账户发起的交易次数,从0开始计算gas price,它决定了交易需要支付的以太币数量。 Gas Limit,即允许处理交易gas的最大目标地址数,即接受交易的对象。如果为空,交易将创建一个新的合约。 交易金额是发送的以太币数量。 它可以是任意文本消息、对合约的调用或创建新合约的代码。

. 请注意,上面的关键点是没有“交易发起”地址,因为该地址可以从生成该交易哈希签名的公私密钥对中导出,并且交易字段由适当的编码RLP(递归长度前缀)。

如何查询以太坊钱包转账记录_以太坊批量转账教程_go以太坊转账

Gas 使用量和 Gas 代币

站在一个很流行的角度。 区块链可以看作是一个共享数据库。 每次从这个数据库读取或写入数据,都需要花费gas来防止垃圾邮件等恶意攻击。 具体来说,在以太坊上执行的每个计算步骤都会消耗 gas,以避免可能导致以太坊停止的恶意攻击。 每个操作码的 gas 成本在以太坊黄皮书中都有解释。 然而,操作码的 gas 开销仍然是一个热门话题,以太坊社区成员正在研究引入存储租金机制的可能性,甚至是 gas 和操作码的动态定价方案。

在以太坊区块链上写入数据非常昂贵。 例如,创建一个非空的存储单元需要花费 20000 gas,这几乎相当于一个简单的以太币转账交易(即当交易结构中的数据字段为空时)的成本(21000 gas)。 作为减轻区块链数据存储扩散的激励计划,以太坊协议将退还 10,000 gas 用于清空不再使用的旧存储单元。

这种以太币返还机制最多可以返还合约交易中消耗的一半gas(普通转账交易不能返还,因为最低消耗的gas已经用完了;但是批量调用合约可以享受这个返还机制)。 Gas 代币可以让开发者简单高效地使用这种返还机制,即通过 Gas 代币,在 Gas 价格低的时候囤货,然后在 Gas 价格高的时候花掉之前储存的 Gas 代币。

最近某交易所确实发现了一个没有正确设置交易gas上限的bug。 攻击方式很简单:在交易所申请提现,然后将提现交易的目标地址设置为攻击者部署的恶意合约。 它的默认回退函数(向合约发送 Ether 将触发该函数的调用)将借此机会投出新的 gas 代币。 (校对注:详见《蚁巢深处》一文末超链接)

如何查询以太坊钱包转账记录_以太坊批量转账教程_go以太坊转账

元交易

元交易是一种发送交易的模式:发送方首先签署合法的以太坊交易,然后通过链式传输将交易和签名转发给中继。 中继愿意承担交易的 gas 开销,最终将交易发送到以太坊网络。

11

- 以太坊技术专家喜欢抽象——这种元交易模型很有用以太坊批量转账教程,因为发送方不再需要在发送账户中拥有以太币,这从用户体验的角度来看是有益的。 我之前在这篇文章中提到过元交易及其对用户体验的影响。

元交易的最终目的地址一般是以太坊合约。 在一定程度上,合约知道交易的签署方不是交易的实际发送方。 以太坊交易API的msg.sender字段会返回中继方的地址,但它很可能没有代表合约方操作的权限,所以在这个场景下意义不大(看看msg.sender 字段)。 因此,很多元交易都依赖链上签名验证(通过以太坊API的ecRecover函数)来确保签名者的账户确实在合适的白名单中(有权操作交易所需的指令)。

以太坊批量转账教程_go以太坊转账_如何查询以太坊钱包转账记录

海底发

(不要与这个潜艇交易网站交谈??困惑)

矿工抢注现象是基于区块链经济的交易市场难以根除的老问题以太坊批量转账教程,即矿工可以对自己的交易进行重新排序,随意插队或插队自己的交易来获利. 海底交易试图通过其强大的保密性为矿工潜逃问题提供解决方案。 Submarine Transactions 将尝试完全隐藏交易的存在,而不是仅仅隐藏交易金额。 当然,如果一笔交易永远隐藏起来,那将毫无意义。 潜艇交易允许发送方在未来某个时间点披露交易,这就是它被称为“潜艇”交易的原因。

12

——使用潜艇进行交易,用户的交易不会被矿工抢走——用户提交一个带有加密承诺的交易,其中包含一些用户想要发送给目标合约的应用数据,交易涉及以太币或者代币被锁定在一个与全新地址相同的潜地址(因此很难被矿工识别)。 锁定在该地址中的以太币或代币只能由目标合约解锁。 通过为承诺交易增加货币价值(除非用户完成承诺的披露,否则额外的货币价值将被有效地燃烧并且无法取回),我们保证有效的经济约束,防止一些恶意用户选择性地适当披露他们的承诺(即防止用户提交任何免费承诺)。 只要提交的交易被成功封装并被足够多的区块确认,用户就可以向目标合约披露他的加密承诺,合约(在成功验证后)将执行交易中包含的应用逻辑。 反事实合约的实例化反事实一词源于哲学和思维中的一个概念。 反事实陈述是一组合理的推论和相应的结论,但陈述的前提故意与事实相反。 除了这个与事实不符的前提外,整个推理链都是合理的,所以前提是正确的,最后的结论也是正确的。 当应用于区块链交易场景时,合约的逻辑不仅会考虑区块链的当前状态,还会考虑部署合约后区块链的状态。

如何查询以太坊钱包转账记录_go以太坊转账_以太坊批量转账教程

13

更具体地说,在部署之前获取合约的地址。 该模型称为反事实合约实例化。 该理论由 L4 在他们的“Counterfactual State Channels”论文中发表,受到以太坊社区的广泛欢迎。 目前,新的合约地址是由以太坊运行代码CREATE生成的,可以通过合约创建者的账户地址(sender字段)和创建者发送的交易数量(nonce字段)明确判断,即, sender 和 nonce 字段将通过 RLP 编码,然后由 Keccak256 哈希算法生成。 EIP 1014引入? 瘦创造 2? 此外,操作码允许用户与链中尚不存在的地址进行交互; 虽然这个地址还没有代码,但保证它只能包含特定初始代码生成的合约逻辑。 与CREATE opcode不同,CREATE2 opcode通常使用sender-nonce然后hash得到协议地址,它使用如下地址生成公式:keccak256(0xff address salt keccak256(init_code)))[12:]? 这种模式对于涉及与尚不存在的合约进行交互的状态通道场景尤其重要。 它允许以太坊主链成为争议(解决)层,而不管合约部署的实际成本如何。 此外,这种模式还可以用于已知函数将创建新地址的场景,例如这里的贷款还款地址。

零确认交易 零确认交易从何而来? 比特币现金社区目前仍然是一个有趣但未经证实的研究领域。 在这样的区块链网络中,块发布的时间实际上可能更不利于用户体验(UX 抑制)。 确认零交易的发件人需要提交保证金。 如果重复消费,发送方将损失保证金。 在比特币现金中,可以通过重复使用 UTXO 条目来检测双重支出。 任何人(一般假定为矿工)都可以提交发现的两笔双花交易,然后获得存款奖励。 在以太坊的账户网络中,与类似比特币的 UTXO 不同,我们可以检查同一发送者是否重复使用了相同的随机数。 例如,部署的合约提供了一个 reportDoubleSpend 方法,它接受两个已签名的交易来完成,然后合约将检查它们的发送者和随机数,如果它们相等,它将奖励方法调用者一个差异。 原理很简单:如果存款金额足够大,它是防止交易发送方作弊(双花)的有力武器,因为他们可能会损失所支付的存款。 此类交易被认为最适合小额一次性支付场景,因为该场景存在一系列潜在的攻击模式。 批量转账与ERC20代币交互的一个主要问题是,一般需要两种不同的交易:一种是调用代币合约的approve方法,另一种是实际调用目标合约(transferFrom方法会被调用在目标合约内)并使用命令 Tokens 完成特定逻辑(doSomethingForTokens 方法)。 这种模式导致了一系列非原子事务的问题。 最简单的情况下,如果 doSomethingForTokens 调用交易失败,之前的 approve 调用不会回滚,即 approve 方法允许合约控制的代币配额仍然有效。

14

- ERC 20 代币合约的 approve 和 transferFrom 方法是非原子 Limechain? 实施了一种特殊的批量传输方法。 参考元交易中的链签名验证原理,失败的doSomethingForTokens调用交易会回滚相应的approve调用,从而提高了原有ERC20代币的approve和transferFrom方法的非原子性。基于SMS

go以太坊转账_如何查询以太坊钱包转账记录_以太坊批量转账教程

支付

币文? 它可能是最著名的基于短信的加密货币支付服务提供商,目前专注于提供比特币现金交易。 这种支付机制对发展中国家的移动设备特别有用。 以太坊2? 类似的技术已经部署在以太坊上,它可以通过基于移动应用程序(如 Trust)的传统以太坊钱包工作。

15

- eth2.io 的基于 SMS 的加密数字支付方案——该特定方案使用托管合约。 发送方生成一个临时的公私钥对发送给托管合约? 存储在以太坊中,之前生成的临时公钥附加到此传输中。 使用随机生成的对称密钥对私钥进行加密,然后通过链下方式(电子邮件、短信、Whatsapp 等)将密文发送到中心化验证服务器。 ). 目前,如果收款人手机号验证成功,验证服务器会将密文发送给收款人,收款人可以解密(即获得临时私钥),然后对提现交易报文进行签名. 然后托管合约可以验证签名并确认它是由临时私钥签名的。 集中式服务器用于验证手机号码和传递密钥,但 Eth2 的服务器无法控制托管合约中锁定的以太币。 如果中心化服务器受到攻击,支付交易将失败,但以太币仍保留在托管合约中。 如果此时他们想取回锁定的以太币,发送者可以通过调用托管合约取消支付。 订阅付费 基于opt-out的订阅服务付费是Web2.0时代互联网服务的主流实现方式。 例如,Spotify、Netflix、Headspace 和 Tinder 都建立了基于订阅付费的商业收入模式。 加密货币订阅支付的概念也并不新鲜。 在比特币中,nLocktime? 字段可用于确保在指定的块高度之前不包含(即花费)已签名的交易。 但在以太坊中,预签名交易对于未来的支付意义不大,因为账户的nonce会随着账户不断发出交易而增加,导致预签名使用的nonce越小,交易就会无效。 幸运的是,以太坊的图灵完备性提供了一个解决方案:对于循环订阅类型的交易,有一些架构上的解决方案。 这些架构在利润(流动性)、用户体验的复杂性、可选功能、gas 开销和可扩展性方面有不同的权衡。 另一种基于Oracle机器方法调用的特殊交易发送方式是使用Oracle机器服务,如Oraclize,通过适当的中心化来换取gas消耗的减少。 你可以阅读这篇文章。

16

- 使用 Oraclize 减少常量合约调用的气体使用量 - 这种类型适用于非事务性(返回常量)方法调用。 已经与以太坊主网同步的节点可以通过以太坊JSON-RPC的eth_call接口调用上述方法。 只要继承usingOraclize,就可以使用Oraclize的oraclize_query方法在合约中进行常量查询。 另外,合约中必须定义_石衣网小甲2022_callback(bytes32queryid, string results)的回调函数,Oraclize查询会调用该函数并保存查询结果。 直接在链上查询以获取和计算这些状态常量可能比调用 Oraclize 更昂贵。 使用一次性地址进行多次支付作为背景,交易字段中没有“原始地址”。 这个地址可以通过 ecRecover 函数计算出来。 那么问题来了:我们可以在交易签名中随意填写我们想要的数据吗? 事实证明,一半的签名是正确的,即 ecRecover 仍然返回合法的公钥(因此也对应于以太坊地址)。 由于我们无法控制生成的地址,因此我们传递了设置的字段值,实际上我们正在构建一个交易,该交易可以在看似随机生成的地址中花费余额。 如果我们创建这样一个交易(发送方是我们要生成的地址),并向生成的地址充值一些以太币,那么这个交易就可以像普通交易一样执行。 通过这种方式,我们实质上创建了一个一次性地址,因为其中的余额只能由一次交易使用。 如果我们以某种可预测的方式选择交易签名中的字段值并发布交易,我们就可以向任何人证明发送到交易发送方地址的金额只能被本次交易使用,不能用于任何其他交易。

17

如上图所示,该场景尝试向11140个目标地址发送交易,由一系列向多个地址发送Ether的交易组成,每笔交易向110个地址发送,其中发送方的地址由以上方法。 对于签名字段,我们填入'0xDA0DA0DA0...'?,这是一个可预测的值,所以我们可以确定没有人能够得到这些签名对应地址的私钥。 小易网小编在2022年创建了一批“一次性地址”的交易,这些地址可以用来提供相应交易所需的交易金额。 但是104笔交易对于委托的自然人来说还是太多了,所以我们重复上面的过程,形成级联结构:我们先构造104笔交易,每笔交易都有其对应的唯一地址,然后构造转账发送以太币到相应的104地址。 经过验证,代码确实可以按预期运行,那么任何人都可以将这些构建的交易发送到以太坊网络,整个过程像多米诺骨牌一样自动进行:列表中的 11400 个地址将收到 Ether,但我们只使用了一次人类签名。 在以太坊上完成交易的方式有很多种! ! ! 如果我遗漏了什么,请告诉我,我会不时更新这篇文章。欢迎关注我的推特:本文来源:以太坊爱好者 Ethfans 原文链接:? 作者: ? Aodhgan Gleeson 翻译和校对: ? 雷&阿健