Solidity合约中签名验证的一点实践

这篇具有很好参考价值的文章主要介绍了Solidity合约中签名验证的一点实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

在目前NFT概念国内外火爆的背景下,涌现了很多项目,特别是公链以太坊上,社区与新团队更是层出不穷,让人眼花缭乱。

而一个新项目上线的成功与否,往往与其社区支持力度息息相关。现在很多新项目方为了拥有更多的热度,人为的设置了白名单这个玩法和门槛,于是我们可以看到Discord频道里的人们为了肝白,可以绞尽脑汁、废寝忘食。毕竟,拿到了白名单的人,是会被承诺可以提前pre mint,对于热门项目来说,这几乎是个稳赚不赔的投资。

而对于ERC721标准协议的内容来说,并没有白名单这个说法,那么从技术的角度来说,是怎么实现这个功能的呢。实际上,这里还是个逐渐演进的过程。

白名单

最早,在有项目方开始逐渐使用白名单机制的时候,由于白名单一般只给出几百个,所以实现方式还是比较原始的。而因为当时普遍的项目架构都是前端网页调用智能合约就完事了,并没有引入后端进来,所以做法往往是把白名单地址列表由项目方直接写入到合约中,然后用户在发起pre mint请求时,方法里会判断用户地址是否在该地址列表中。

这种方式从原理上当然没有问题,而且也体现了区块链不可篡改、公开透明的特性。不过由于以太坊上高昂的gas费,以及目前白名单人数一般都是数以千计,所以为了自身成本考虑,几乎所有项目都逐渐放弃了这种方式,而是改用另外两种机制:

  1. 链下(即后端服务)对单个白名单地址签名,合约只需存储签名地址。
  2. 对白名单地址列表整体构建Merkle树,合约只需存储Merkle的root hash。

本文对第一种链下签名文章来源地址https://www.toymoban.com/news/detail-482627.html

到了这里,关于Solidity合约中签名验证的一点实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP实践:用openssl打造安全可靠的API签名验证系统

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:PHP进阶实战教程。 🏆另有专栏PHP入门基础教程,希望各位大佬

    2024年02月14日
    浏览(41)
  • 背包问题的一点看法

    背包问题已经被人讲得很透彻了,上古大神写的《背包九讲》已经相当详细的阐述了背包问题,本文不会过多赘述,主要总结一些有关背包的有趣的玩意。 01背包和完全背包是非常类似的问题,01背包的特点是每种物品最多只能取一个,而完全背包每种物品都可以任意取。 以

    2024年02月12日
    浏览(40)
  • 给想考CISP的一点建议

    了解CISP考试: 在报名参加考试之前,要充分了解CISP认证考试的考试内容、考试形式、考试难度等相关信息,这有助于你制定更有效的备考计划。 制定备考计划: 根据自己的实际情况和考试要求,制定一份详细的备考计划,包括学习时间、学习内容、练习测试等。在备考期

    2024年02月01日
    浏览(39)
  • 账号登录相关的一点随笔

    最后更新于2023年8月8日 14:25:32 简单:一个token验证; 前端发来登录信息,后端验证通过后,将token发回前端; 复杂:Access Token + Refresh Token验证: 将Access Token和Refresh Token都发回前端,AT过期时间短,RT时间长。AT过期后,使用RT刷新AT,再用新的AT登录。 token这东西可以放在ht

    2024年02月13日
    浏览(39)
  • 关于golang锁的一点东西

    本文基于go 1.19.3 最近打算再稍微深入地看下golang的源码,先从简单的部分入手。正巧前段时间读了操作系统同步机制的一点东西,那么golang这里就从锁开始好了。 在这部分内容中,可能不会涉及到太多的细节的讲解。更多的内容会聚焦在我感兴趣的一些点,以及整体的设计

    2024年02月14日
    浏览(42)
  • 找实习、工作的一点浅见

    一、实习的必要性。 为什么需要去实习?1、实习能帮助自己增进对于具体职场的认识,包括具体工作的职责、内容、工作氛围、是否有较大压力等等;2、通过一段时间的实习经历,能帮助自己作出未来是否能胜任类似的工作的判断,如果有留用,是否考虑留下,如果没有留

    2024年02月10日
    浏览(52)
  • [RPC]关于RPC的一点理解

    以下内容仅为个人理解,不作正确性保证,感谢批评指正 在分布式计算中,远程过程调用 (RPC) 是指计算机程序导致过程(子例程)在不同的地址空间(通常在共享网络上的另一台计算机上)中执行, 它的编码就好像是普通(本地)过程调用一样,程序员没有 显式 编码远程

    2024年02月10日
    浏览(41)
  • 对单片机的一点理解

    前言 大一时学过一段时间的51单片机,后面就一直研究STM32和算法,最近工作搞51单片机有半年了,有一些自己的想法,跟公司的工程师也探讨了一些,结合聊天记录,写了这篇博客,希望对读者有帮助。 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714@qq.com 对单片机

    2024年04月14日
    浏览(61)
  • 对卷积的一点具象化理解

            卷积的公式一般被表示为下式:         对新手来说完全看不懂这是干什么,这个问题需要结合卷积的应用场景来说。         卷积比较广泛的应用是在信号与系统中,所以有些 公式的定义会按照信息流的习惯 。假设存在一串信号 g(x) 经过一个响应 h(x)

    2024年02月09日
    浏览(34)
  • Hyperledger Fabric 网络环境的一点理解

    Hyperledger Fabric 开发链码,一般都是测试网络开发,然后部署到生产网络。 下面介绍测试网络、生产网络的一点理解。 使用cryptogen等工具建立测试网络,开发环境使用。 这里以https://github.com/hyperledger/fabric-samples 2022.2.12的代码为例进行说明。 目录: fabric-samples/test-network/orga

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包