首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在前端签署事务并在后端服务器上发送

在前端签署事务并在后端服务器上发送
EN

Ethereum用户
提问于 2021-08-24 20:38:25
回答 3查看 1.3K关注 0票数 0

嗨,我正在制作一个类似于OpenSea的NFT拍卖网站来学习区块链技术。但是,对于在应用程序的前端发送事务,我有一些安全顾虑,因为如果用户决定购买NFT,并且在那里进行交易,资金就会在前端进行,难道他们就不能编辑javascript,这样他们就不用支付任何费用了吗?如果是这样,我怎样才能防止这种情况发生呢?是否可以通过在前端签署事务,然后将其发送到后端来防止这种情况?

EN

回答 3

Ethereum用户

发布于 2021-08-24 21:19:04

一旦您获得事务的详细信息,您就可以对它们进行签名,并使用已签名的数据RLP编码。编码后,您可以使用已签名的数据,如果用户更改任何值,则无需担心。https://web3js.readthedocs.io/en/v1.2.11/web3-eth-accounts.html#signtransaction

希望这能有所帮助。

票数 0
EN

Ethereum用户

发布于 2021-08-30 07:19:48

您可以在smart合同中进行验证。

代码语言:javascript
复制
function buy(uint256 tokenId) public payable {
    require(msg.value == tokens[tokenId].price, "Not valid price");
}

用户可以修改事务,但是如果价格不是正确的,它就会恢复。

票数 0
EN

Ethereum用户

发布于 2022-12-20 10:43:23

我会这样做的。

  • 在后端启动并创建事务结构,并将其发送到前端。
  • 在前端,您可以要求用户签署一个离链事务,您将得到一个签名作为输出。检查EIP712
  • 将事务的签名发送回后端。

此时您将拥有签名和tx数据(由后端生成).

  • 现在,您可以从签名中恢复地址,并确保用户对后端执行的事务进行了签名,并且没有更改。
  • 因此,现在您可以在后端添加一些额外的验证,并确保后端有一个有效的事务。
  • 每当您想要执行此事务时,只需将其从后端发送到前端,并要求特定用户签名并执行tx。

无论如何,将所有需要的验证添加到智能契约(

)中

我相信opensea也会做类似的事情。基本上,您可以跟踪前端和后端之间的所有请求和响应,查看来自后端的数据以及前端处理数据的方式。另外,检查他们的新海港协议,您可以看到他们是如何代表智能契约处理和验证传入数据的。

如果你检查港口github,我建议你去“参考”文件夹,因为所有的合同都直接写在那里。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/107703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档