我可以使用 BLS12-381 私钥签署以太坊交易吗?

问题描述 投票:0回答:1

密码学新手,最近在研究BLS签名。写的时候有什么错误还请见谅

我试过生成一个 BLS 密钥对并使用私钥派生一个以太坊账户并签署链上交易。我使用'mattrglobal'库生成BLS密钥,然后将私钥传递给'ethereumjs-wallet'库来派生一个帐户。

const {
  generateBls12381G2KeyPair,
} = require("@mattrglobal/node-bbs-signatures");

const {
  default: { fromPrivateKey },
} = require("ethereumjs-wallet");

const keyPairTest = (async function () {

  const keyPair = await generateBls12381G2KeyPair();

  const wallet = fromPrivateKey(Buffer.from(keyPair.secretKey));

  console.log(`secretKey: ${Buffer.from(keyPair.secretKey).toString("hex")}`);
  console.log(`ethereum address: ${wallet.getAddressString()}`);

})();

虽然我能够推导出以太坊公钥,但我并不期望能够签署有效的以太坊交易,因为我认为不同的曲线参数会阻止我为交易生成有效签名。

然而,通过直接使用 MetaMask 上的私钥(在 Sepolia 测试网上),我能够执行简单的资金转账交易并部署智能合约。

这怎么可能?我是不是忽略了什么?

在我看来,一般不建议对两种不同类型的签名使用相同的密钥,对吗?

cryptography ethereum signature elliptic-curve secp256k1
1个回答
0
投票

我可以使用 BLS12-381 私钥签署以太坊交易吗?

没有。以太坊交易不使用 BLS12-381。

区块链世界中的数字签名通常基于椭圆曲线群。为了签署用户的交易,以太坊使用带有 secp256k1 椭圆曲线的 ECDSA 签名

私钥是一个随机的 256 位数字。您可以在大多数曲线上使用私钥。当 MetaMask 导入您的私钥时,它只会导入一个随机数。

© www.soinside.com 2019 - 2024. All rights reserved.