如何在 Kotlin 中为 Android 部署带有 Go Ethereum (Geth) 的 Ethereum 合约?

问题描述

我正在使用 Go Ethereum (Geth) library for Android。我想在我自己的 Kotlin 代码中的 Geth 节点上部署 this multi-signature contract,由于几乎没有关于 Android 上的 Geth 的文档或示例,我真的很挣扎。我将此合约编译为 .abi.bin 文件,并使用 abigen 生成了 Java 绑定/包装器。我现在如何在我的 Kotlin 代码中部署这个绑定?据我所知,找出我的 Geth 库包含哪些函数和类的唯一方法是检查 .aar 本身并使用 Android Studio自动完成提示。通过这种方式,我发现 org.ethereum.geth.Geth 类具有方法 deployContract()(它要求一个 TransactOpts;我也很挣扎)和 bindContract()。它们之间有什么区别,我该如何使用它们?

关于TransactOpts:可以使用Geth.newTransactOpts()方法轻松制作,之后我可以设置各种字段,例如gasPricefromAddress。我试图设置这些字段。看来我可以用 NewKeyedTransactOpts() 创建一个 TransactOpts。但是,我在Android Geth版本中找不到这种方法。因为它的一个字段是 Signer,我什至创建了一个 KeystoreSigner 类,我用它来创建一个 Signer 实例,然后我把它放在 TransactOpts 中。但是,当我使用所有字段运行它时,出现 hex not valid 错误。调试有点困难,因为我无法进入 Geth 代码行。

非常感谢任何建议或指示!

解决方法

以太坊多重签名钱包 此 repo 已被弃用并由 Safe Multisig 取代。请在此处找到 Safe 存储库:https://github.com/gnosis/safe-contracts

你可以关注github项目。

https://github.com/gnosis/safe-contracts