跳转至

即将实施:对ledger签名后signature的v字段进行兼容改造

针对ledger签名(包括所有交易签名、消息签名、712签名),在将来的几个月内,会更新一项新的技术措施,会将签名后的 signature 字段中末尾的01替换成1c00替换成1b

这个改动,是为了保证ledger账户签名和普通账户签名的末尾两位一致。

普通交易签名

以下是签名成功的 ledger 交易体:

{
    "txID": "......",
    .....other property,
    "signature": [
        "......01"
    ]
}

会变成:

{
    "txID": "......",
    .....other property,
    "signature": [
        "......1c"
    ]
}

如果需要广播,DApp会使用修改后的交易体进行广播

消息签名

DApp发送消息签名

tron.tronWeb.trx.sign('.....unsign_string');

或者

tron.tronWeb.trx.signMessageV2('.....unsign_string');

ledger返回的实际签名hash:

......50f400

经过修改后的hash:

......50f41b

712签名

DApp发送712签名

const types = {
  Person: [
    {
      name: 'name',
      type: 'string',
    },
    {
      name: 'wallet',
      type: 'address',
    },
  ],
  Mail: [
    {
      name: 'from',
      type: 'Person',
    },
    {
      name: 'to',
      type: 'Person',
    },
    {
      name: 'contents',
      type: 'string',
    },
  ],
};

const primaryType = 'Mail';

const domain = {
  name: 'Ether Mail',
  version: '1',
  chainId: '0x2b6653dc',
  verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
};

const message = {
  from: {
    name: 'Cow',
    wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
  },
  to: {
    name: 'Bob',
    wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
  },
  contents: 'Hello, Bob!',
};

await tron.tronWeb.trx._signTypedData(domain, types, message);

ledger返回的实际签名hash:

.....7ee700

经过修改后的hash:

......7ee71b