所有权与来源
YUANLINK · 元链 每条登记都是一笔真实的链上交易。登记人的钱包调用 YuanlinkAssetRegistrationV2,在同一笔原子调用中写入 (assetId → payloadHash) 并铸造 ERC-721。转让 使用独立合约 YuanlinkAnchor,将签名消息以哈希形式提交。
无所有者、无管理员、无费用
YUANLINK 合约无所有者、无管理员钥匙、无费用开关、无升级路径。一经部署,永续运行。不存在可修改哈希记录、越过登记流程铸造、或冻结转让的特权钱包。
登记哈希
链上提交的 payload 哈希为:
payloadHash = keccak256(utf8(canonicalRegistrationMessage))
canonicalRegistrationMessage 就是资产页展示的、经 UTF-8 编码的规范签名消息。其字节稳定且可复现 —— 任何人都可以从公开挂牌重新生成并对比。
转让哈希
对于 转让,链上提交的哈希为:
transferHash = keccak256(concat(outgoingSignature, incomingSignature))
拼接按字节精确:出让方 ECDSA 签名(65 字节,r||s||v)在前,接收方签名(65 字节)在后。任何人都可以从登记网络取出两笔签名,本地哈希后与 YuanlinkAnchor 对比。
自行复核
- 打开资产页。
- 复制规范签名消息。
- 本地计算
keccak256(utf8(message))。任何 keccak256 工具皆可 —— 浏览器控制台里的 ethers.js、Python 的eth_hash、Foundry 的cast keccak。 - 在 BscScan 上调用
YuanlinkAssetRegistrationV2.registrationHashOf(assetId)读取链上值。 - 对比。一致 = 真;不一致 = 伪造或 bug。
对 YuanlinkAnchor 上的转让同理:
// 伪代码
const packed = concat([outgoingSig, incomingSig])
const local = keccak256(packed)
const onChain = await anchor.transferHashOf(assetId, nonce)
assert(local === onChain)
今日已部署
| 合约 | 地址 |
|---|---|
YuanlinkAnchor(转让锚定) | 0xd281844977aba8c951e0544a9e3bccc881d2d86f |
- BscScan. https://bscscan.com/address/0xd281844977aba8c951e0544a9e3bccc881d2d86f
- Sourcify. 创建字节码与运行时字节码均
exact_match。 - 链。 BSC 主网(chain id 56)。
待部署
YuanlinkAssetRegistrationV2(登记 + 铸造)。YuanlinkPortalFactory(ERC-20 发行 + PancakeSwap V3 建池)。YuanlinkYieldDistributor(Merkle 空投分配)。