vla*_*ich 5 kotlin blockchain corda
我已经调查并参与了corda-settler项目。按照文档中的建议,我创建了一个自定义ethereum模块(其轮廓与该ripple模块相似),提供了使用中的未分类付款来清算债务的选项ETH。实现(https://github.com/vladichhh/corda-settler)包含以下重要部分:
flows
MakeEthPayment
services
ETHClient
ETHService
types
EthPayment
EthSettlement
token
registered DigitalCurrency for ETH
oracle
added logic for ETH payment verification
Run Code Online (Sandbox Code Playgroud)
MakeEthPayment.kt
@Suspendable
override fun makePayment(obligation: Obligation<*>, amount: Amount<T>): EthPayment<T> {
// get ETHService client
val ethClient = serviceHub.cordaService(ETHService::class.java).client
val recipient = obligation.settlementMethod?.accountToPay.toString()
val amountToSend = amount.quantity.toString()
// trigger ETH transfer
val txHash = ethClient.sendEth(recipient, amountToSend)
// return the payment
return EthPayment(txHash, amount, PaymentStatus.SENT)
}
Run Code Online (Sandbox Code Playgroud)
ETHClient.kt
fun sendEth(recipient: String, amount: String): String {
val weiAmount: BigInteger = Convert.toWei(amount, Convert.Unit.GWEI).toBigInteger()
val credentials: Credentials = WalletUtils.loadCredentials(walletPassword, walletFile)
val transactionReceipt: TransactionReceipt = Transfer
.sendFunds(web3j, credentials, recipient, BigDecimal(weiAmount), Convert.Unit.WEI)
.send()
return transactionReceipt.transactionHash
}
Run Code Online (Sandbox Code Playgroud)
为了将所需的ETH金额发送到指定的接收者账户,我们必须做一些以太坊特定的事情:
这里是问题:
corda-settler/ethereum/src/main/resources/file.tmp
corda-settler/cordapp/src/main/resources/file.tmp
Run Code Online (Sandbox Code Playgroud)
/Users/vladimirhristov/WebstormProjects/Corda/corda-settler/cordapp/src/main/resources/file.tmp
Run Code Online (Sandbox Code Playgroud)
似乎已找到该文件,但又出现另一个异常:
java.lang.OutOfMemoryError-屏幕截图
似乎钱包解密操作非常耗时,可能会中断流程。有一个选项可以降低钱包生成的算法复杂度,这将反映出在下一步解密同一钱包所需的资源较少,但这也会降低安全性。
这是我的三个基本问题...
文件内容(包含加密的发件人的钱包):
file.tmp
{"version":3,"id":"ecb51768-8564-498a-bb11-3a5a5c8dc0bb","address":"2bafc482bd227dfd5ba250521a00be3a4cc88bbd","crypto":{"ciphertext":"e0511415792dfa7221ba1b8f32b8ec98e1410f45e612e2100df1aceddfdb22bd","cipherparams":{"iv":"7ffa2af08f502c63d57e62440ad77539"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"8051a5df1c02eb3eba81d2920fbb84b76b948a1248bbba62ffff684e733948cf","n":131072,"r":8,"p":1},"mac":"be23fe0e261ba38892581d80afd0c86563748377b5cc702b6ed3285a13cceff6"}}
Run Code Online (Sandbox Code Playgroud)
我将不胜感激!提前致谢 :)
非常奇怪的是,Corda 在运行该流程时给出内存不足错误。
实际上我想说的是,我们需要能够查看流程的代码,才能知道它是如何耗尽内存的。
你在容器中运行它吗?只需确保您满足运行带有应用程序的 JVM 的要求即可。
tl;dr 使用 8GB RAM 机器在最新版本的 corda 上运行 Corda 节点,有望解决此问题。
这是有关内存要求的文档页面; https://docs.corda.net/docs/corda-enterprise/4.5/node/performance-results.html#sizing
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |