YOUChain 主网token映射说明

主网token映射说明

说明

主网token映射 是指YOUChain主网上线后(目前已上线),将以太坊上的 ERC20-YOU 等量映射到 YOUChain主网YOU的操作。

此操作可通过YOUChain 主网换币 系统完成。

重点概念说明

提交映射 页面的签名,指的是换币用户用以太坊的账号,对已经完成的转账的(交易哈希+YOUChain目标接收地址)的签名。这个签名使用的接口是数据签名接口 personal_sign 。

例如,以太坊A账户做映射,先完成以太坊的转账,假设交易哈希为 0x83ee72d83833d8957660bd974b68df37de93467ed8db95dc86e78fc10fe82239 ,然后,假设他的YOUChain接收地址为 0xA6FB67336FA6678e63b82700eba6b6275B01B6DD,则他要用以太坊A账户对以下数据签名: 0x83ee72d83833d8957660bd974b68df37de93467ed8db95dc86e78fc10fe82239A6FB67336FA6678e63b82700eba6b6275B01B6DD

这所得到的数据签名,就是 提交映射 页面需要的签名。 这个签名可以通过 MetaMask钱包完成,用户也可以通过别的方式。

如果是前者,则用户只需要填写交易哈希及YOUChain接收地址,然后在 提交映射 页面点击生成签名向MetaMask请求数据签名; 如果是后者,用户要直接自行填写三个字段的值。

一、MetaMask方式

安装MetaMask

由于chrome比较稳定,所以推荐使用MetaMask。通过chrome下载并安装MetaMask插件钱包。

MetaMask的安装方式请自行查阅,本文不做介绍。

将钱包新增至MetaMask钱包

如果初次使用MetaMask,可以通过导入助记词的方式导入账户

如果已经有账户登录MetaMask,可以通过私钥进行导入账户

添加代币

代币联系人地址为YOU合约地址:0x419e30bdff5e65beee93ccc59254996fe595134e ,代币符号为 YOU。

向官方指定地址转入 ERC20 YOU

向指定地址 0x5F4023f910a4aa379653d053F74c0DbC27601E5A 转入you,待确认交易提交成功后复制交易hash去提交映射界面提交映射申请。

注意:交易的gasPrice默认设置的是 21 gwei;由于以太坊上gasPrice的动态变化,所以这个固定值很可能是不适合您发起交易那时的情况。请务必注意修改此gasPrice值。 修改方式为在确认转账页面,单击 EDIT 按钮去修改。见下方图示。

提交映射

在提交映射界面填入正确的 ETH账户地址、交易HASH值、YOUChain主网账户,然后点击生成签名生成对应的签名,之后就可以提交映射申请。

查询映射状态

输入正确的映射YOU账户名(即“提交映射”界面填写的“YOUChain主网账户”),即可查询对应的映射状态。

二、自主签名方式

主要包括以下几种

  1. web3js签名
  2. 本地运行节点使用rpc签名
  3. 其他钱包进行签名

web3js签名

参考(请将如下内容保存为sign.js文件):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const Web3 = require("web3");

// mainnet end point
const endpoint = "https://mainnet.infura.io/v3/65980e144a5b49a9ac7d70d667d7ea5a";
const web3 = new Web3(endpoint);

/**
* 通过私钥获取签名
* @param data 需要签名的数据 交易哈希+YOUChain目标接收地址
* @param privateKey 发送交易eth账户的私钥,注意私钥必须带有0x前缀
* @returns {Sign | string} 签名数据
*/
function signWithPrivateKey(data, privateKey) {
const sign = web3.eth.accounts.sign(data, privateKey);
console.log("sign", sign);
return sign && sign.signature;
}


const signature = signWithPrivateKey("", "");
console.log("signature", signature);
  1. 电脑安装node和npm环境

  2. 修改sign中对应的参数 需要签名的参数(data)、发送交易eth账户的私钥(privateKey)。

  3. 在与sign.js同目录下执行以下命令

    1
    npm install web3
  4. 运行sign.js

    1
    node sign.js

注意:eth账户的私钥必须包含0x前缀,否则无法获取正确的签名。

本地运行节点使用rpc签名

  1. 安装Geth,在 Building-Ethereum 里可以找到各种平台(Windows,macOS,Linux)上的安装说明。

  2. 运行节点,执行以下命令,命令介绍执行 geth --help 进行查看

    1
    geth --datadir data0 --port 61910 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpcport 8283 console
  3. 调用 personal_importRawKey、personal_sign,参考

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // 导入账号
    curl --request POST 'http://127.0.0.1:8283' \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "personal_importRawKey",
    "params": [
    "privateKey",
    "password"
    ]
    }'

    // 签名
    curl --location --request POST 'http://0.0.0.0:8283' \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "personal_sign",
    "params": [
    "transactionHash+mainAddress","ethAddress","password"]
    }'

    privateKey为申请换币交易发送方的私钥(不包含前缀0x)。

    两个方法中的password必须相同。

    transactionHash+mainAddress是交易哈希+主网地址。

    ethAddress是申请换币交易发送方

    注意:以上参数需要替换为对应的值

其他钱包进行签名

eth钱包一般都会包含签名功能,需要参考对应钱包的使用方式,例如MetaMask

相关文章推荐