Uint8List signTransaction(Uint8List messageHash, Uint8List privateKeyBytes) {
// 创建ECDSA签名对象,使用SECP256k1曲线
var signer = Signer("SHA-256/ECDSA");
var keyParams = PrivateKeyParameter<ECPrivateKey>(ECPrivateKey(
BigInt.parse(privateKeyBytes.toList().map((byte) => byte.toRadixString(16)).join(), radix: 16),
ECDomainParameters("secp256k1"),
));
// 初始化签名对象
signer.init(true, keyParams);
// 执行签名操作
ECSignature signature = signer.generateSignature(messageHash) as ECSignature;
// 将签名转换为Uint8List格式
var r = signature.r.toRadixString(16).padLeft(64, '0');
var s = signature.s.toRadixString(16).padLeft(64, '0');
return Uint8List.fromList((r + s).codeUnits);
}