嗨,我正在制作一个类似于OpenSea的NFT拍卖网站来学习区块链技术。但是,对于在应用程序的前端发送事务,我有一些安全顾虑,因为如果用户决定购买NFT,并且在那里进行交易,资金就会在前端进行,难道他们就不能编辑javascript,这样他们就不用支付任何费用了吗?如果是这样,我怎样才能防止这种情况发生呢?是否可以通过在前端签署事务,然后将其发送到后端来防止这种情况?
发布于 2021-08-24 21:19:04
一旦您获得事务的详细信息,您就可以对它们进行签名,并使用已签名的数据RLP编码。编码后,您可以使用已签名的数据,如果用户更改任何值,则无需担心。https://web3js.readthedocs.io/en/v1.2.11/web3-eth-accounts.html#signtransaction
希望这能有所帮助。
发布于 2021-08-30 07:19:48
您可以在smart合同中进行验证。
function buy(uint256 tokenId) public payable {
require(msg.value == tokens[tokenId].price, "Not valid price");
}用户可以修改事务,但是如果价格不是正确的,它就会恢复。
发布于 2022-12-20 10:43:23
我会这样做的。
无论如何,将所有需要的验证添加到智能契约(
)中
我相信opensea也会做类似的事情。基本上,您可以跟踪前端和后端之间的所有请求和响应,查看来自后端的数据以及前端处理数据的方式。另外,检查他们的新海港协议,您可以看到他们是如何代表智能契约处理和验证传入数据的。
如果你检查港口github,我建议你去“参考”文件夹,因为所有的合同都直接写在那里。
https://ethereum.stackexchange.com/questions/107703
复制相似问题