ERC-7682: 辅助资金能力
一种允许钱包表明他们可以访问额外资金的能力。
Authors | Lukas Rosario (@lukasrosario), Wilson Cusack (@wilsoncusack) |
---|---|
Created | 2024-04-09 |
Discussion Link | https://ethereum-magicians.org/t/erc-7682-auxiliary-funds-capability/19599 |
Requires | EIP-5792 |
摘要
一个兼容 EIP-5792 的能力,允许钱包向应用程序表明,他们可以访问超出通过在链上查找钱包地址的余额所能计算的资金。
钱包访问辅助资金的能力作为对 EIP-5792 wallet_getCapabilities
请求的响应的一部分传达给应用程序。以下标准没有指定这些辅助资金的来源,但一些例子是:
- 来自链下来源的资金,可以即时上链和使用
- 管理多个账户的钱包,可以将这些账户中的资产转移到所需的账户,然后再提交应用程序请求的交易
动机
许多应用程序在允许用户完成某些操作之前会检查用户的余额。例如,如果用户想在 dex 上交换一定数量的代币,如果 dex 看到用户在其地址上没有那么多代币,通常会阻止用户这样做。然而,更高级的钱包具有允许用户从其他来源访问资金的功能。钱包需要一种方式来告诉应用程序他们可以访问额外的资金,以便使用这些更高级钱包的用户不会被余额检查阻止。
规范
定义了一个新的 EIP-5792 钱包能力。
钱包实现
为了符合本规范,希望表明他们可以访问辅助资金的钱包,对于他们可以访问辅助资金的每个链,必须回复 wallet_getCapabilities
调用,其中 auxiliaryFunds
对象包含一个设置为 true
的 supported
字段。
钱包还可以选择使用 assets
字段指定他们可以额外访问哪些资产,该字段映射到一个地址数组,表示钱包可能可以额外访问的资产。如果钱包没有回复此可选的资产数组,则应用程序应假定该钱包可以额外访问任何资产。
本规范对辅助资金的来源没有任何限制。
在本规范中,链的原生资产(例如,以太坊上的 Ether)必须由 EIP-7528 指定的 “0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE” 表示。
wallet_getCapabilities
响应规范
type AuxiliaryFundsCapability = {
supported: boolean;
assets?: `0x${string}`[];
}
wallet_getCapabilities
示例响应
{
"0x2105": {
"auxiliaryFunds": {
"supported": true,
"assets": [
"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
]
}
},
"0x14A34": {
"auxiliaryFunds": {
"supported": true,
"assets": [
"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"0x036CbD53842c5426634e7929541eC2318f3dCF7e"
]
}
}
}
应用程序实现
当应用程序看到连接的钱包通过 wallet_getCapabilities
响应中的 auxiliaryFunds
功能访问辅助资金时,应用程序不应阻止用户根据资产余额检查采取行动。
理由
替代方案
高级余额获取
我们考虑的另一种选择是定义一种让应用程序获取可用辅助余额的方法。例如,可以通过提供一个 URL 作为 auxiliaryFunds
功能的一部分,应用程序可以使用该 URL 来获取辅助余额信息。但是,我们最终认为,一个布尔值足以向应用程序表明它们不应根据余额检查来阻止用户操作,并且应用程序实施的负担最小。
如果应用程序认为需要更多功能,此功能的形状允许更高级的扩展。
安全考虑
应用程序不得对辅助资金的来源做任何假设。应用程序的智能合约仍然应该像今天一样,在处理交易时在链上进行适当的余额检查。
版权
在 CC0 下放弃版权及相关权利。
Citation
Please cite this document as:
Lukas Rosario (@lukasrosario), Wilson Cusack (@wilsoncusack), "ERC-7682: 辅助资金能力 [DRAFT]," Ethereum Improvement Proposals, no. 7682, April 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7682.