在网上阅读和搜索之后,我仍然对EOA的工作方式以及它们与智能合同的关系有很多疑问。我的dapp背后的想法是允许用户预订。如果不符合某些条件,它还提供退款。我知道我必须在web3.js中实现一个组件,它发送事务(我决定称之为合同管理器)和可靠的智能契约。我对如何开始这一进程有疑问。我的想法是只有一个EOA (我认为它在合同经理(?)中)它收集客户数据(客户id和支付),并通过事务将其发送到智能合同。
我的问题是:
发布于 2021-02-03 15:58:44
这涉及以太的几个部分如何工作。我试着用一种可以理解的方式来解释:
1.)Ethereum拥有“外部拥有的账户”(EOAs)和“合同账户”。EOA很像普通的银行账户。他们有一个地址(IBAN)和一个余额(以以太为单位)。基本上,EOA的所有者拥有一个公钥对,其中只有他知道私钥。匹配的公钥是“EOAs”地址- "IBAN“。现在,只有EOA的所有者可以通过在过程中使用私钥从该帐户转移以太(=“取款或电汇”)。简而言之,EOA由各自的所有者“直接拥有和控制”。合同账户“不属于”任何人。它们只是单独存在,并存储智能契约代码。他们也有地址等,但没有人拥有匹配的私钥。因此,包含智能合同逻辑控制合同帐户。有关更好的解释,请参见:https://github.com/ethereumbook/ethereumbook。如果你和Ethereum一起工作,考虑买这本书。每一分钱都值!
2.)您描述的场景可能有一个智能合同(即合同帐户,而不是EOA),它接受客户的付款(即从EOA),然后存储谁(=哪个地址)付款的列表。在智能契约中,这可以通过mapping来实现。支付给smart合同的款项随后可以转发到“业务所有者”地址(EOA)。
总之,对于你们的问题:
3.)根据您到底想做什么,您还可以为预订发出(不可替换的)令牌。想要“购买”预订的顾客购买一种令牌。参见,例如,对于这样一个令牌的标准,例如https://ethereum.org/en/developers/docs/standards/tokens/erc-721/。
4.)无论如何,请考虑这样一个事实,即在区块链上存储个人信息是错误的做法,因为所有内容都是公开的,以后不能删除。一个更好的方法可能是你的客户付钱给你(例如以太),然后你为他发出一个所谓的“可核实的索赔”,声明你确认了他的预订和付款。这发生在非链上,只有一个散列存储在区块链上。一般的方法称为“自我主权身份”(SSI)。如果您想跟进这个问题,请参阅系统,如"Sovrin“或"uPort”。https://medium.com/uport/erc1056-erc780-an-open-identity-and-claims-protocol-for-ethereum-aef7207bc744
希望这能帮到你。
发布于 2021-02-03 13:56:26
EOA总是有一个私钥来签署交易。因此,如果您计划使用一个通用的EOA (后端管理器),那么所有事务的发送方将是EOA --而另一个也将支付所有的煤气费。
如果您希望从用户那里获得一些以太资产(以太或一些令牌)作为支付,用户需要自己的钱包(EOA)从哪里支付资产。然后他们会用资产向你的普通EOA发送一笔交易。但是,如果他们只是简单地将事务发送到您的智能契约,而没有通用的EOA,那么就会更容易了。用户还可以在提交事务时输入他们的一些唯一ID。
如果你想要获得非密码资产,那么你需要想出一些方法来处理它们--这部分与区块链无关。
https://ethereum.stackexchange.com/questions/93082
复制相似问题