如何验证徽章的独一无二?

徽章上链,独一无二,公开可查。

每个徽章的 token可以在区块链浏览器上查到,本文仅为用户提供验证方法。

一、验证徽章

以 0xadeeb2abd376a41734cdfb6c5fa9ca50e7168e3fb48e621bede41851c3e44dd0 为例,可以在 以太坊浏览器 搜索,搜索结果如下:

二、验证链上内容

上一步的结果中,最下方的 Input Data 内容如下:

0x327c4c79726963f09f8c807c373030303130333139317ce5ada6e4b9a02041707020e4bd93e9aa8ce7bea4e7bb847ce4b880e591a8e5b9b4e5bebde7aba07ce681ade5969cf09f8e89efbc8ce4bda0e8bf9be585a5e69cace7bea4e4b880e5b9b4e4ba86efbc81e5b88ce69c9be4bda0e5be97e588b0e4ba86e789a9e8b685e68980e580bce79a84e4b880e5b9b4efbc8ce4baa4e588b0e4ba86e69c8be58f8be38081e5ada6e588b0e4ba86e79fa5e8af86e38081e88eb7e5be97e4ba86e8b4a2e5af8ce380827c323032312d30352d32372030393a35303a30312e3937303633372b303830302020202020304402204eeb7584b286a14cd0a237cf4c3739d5429601eec96d821990ff421099cb37f802205a0c59de814c40b890b49cbf12501ec084999a7941aba6e92d4023933a003df2

这段数据分为徽章内容官方签名两部分,用数个 0x20 分割,具体信息如下:

徽章内容:

0x327c4c79726963f09f8c807c373030303130333139317ce5ada6e4b9a02041707020e4bd93e9aa8ce7bea4e7bb847ce4b880e591a8e5b9b4e5bebde7aba07ce681ade5969cf09f8e89efbc8ce4bda0e8bf9be585a5e69cace7bea4e4b880e5b9b4e4ba86efbc81e5b88ce69c9be4bda0e5be97e588b0e4ba86e789a9e8b685e68980e580bce79a84e4b880e5b9b4efbc8ce4baa4e588b0e4ba86e69c8be58f8be38081e5ada6e588b0e4ba86e79fa5e8af86e38081e88eb7e5be97e4ba86e8b4a2e5af8ce380827c323032312d30352d32372030393a35303a30312e3937303633372b30383030

分隔符:20202020

官方签名:

304402204eeb7584b286a14cd0a237cf4c3739d5429601eec96d821990ff421099cb37f802205a0c59de814c40b890b49cbf12501ec084999a7941aba6e92d4023933a003df2

可以通过转码查看徽章内容——点击进入工具

将徽章内容复制到左侧的输入框,会自动在右侧输出,让我们来看下这段话的含义吧!

三、用 Public Key 验证签名

这一流程是为了验证这个交易确实是由新生大讲堂发出的。新生大讲堂的 public key 为:

9e51d588d9749d462d5574fa6b0f7b4cf08feff99513c23bf32240f0bec2c5048a4ef403ae5175b8dda6286b293bc3edcee45d8092e104260a01bc184974464

然后我们可以使用 python 来验证 signature 来自上述 transaction::

import ecdsa
from hashlib import sha256
public_key = '9e51d588d9749d462d5574fa6b0f7b4cf08feff99513c23bf32240f0bec2c5048a4ef403ae5175b8dda6286b293bc3edcee45d8092e104260a01bc1849744649'
signature = '304402204eeb7584b286a14cd0a237cf4c3739d5429601eec96d821990ff421099cb37f802205a0c59de814c40b890b49cbf12501ec084999a7941aba6e92d4023933a003df2'
vk = ecdsa.VerifyingKey.from_string(bytes.fromhex(public_key), curve=ecdsa.SECP256k1, hashfunc=sha256)
vk.verify(bytes.fromhex(signature), bytearray.fromhex(msg), hashfunc=sha256, sigdecode=ecdsa.util.sigdecode_der) # True

发表评论

邮箱地址不会被公开。 必填项已用*标注