現在、取引先に送信されない契約書のドラフト版を1つ作成する予定であり、イニシエータはネットワークに送信する前に変更を加えることができます。 1つの "共有されていない事実"として。私たちが知っているように、Cordaとボールトは共有の事実に使われているので、ここで私はまだボールトを使ってこの種の "共有されていない事実"を保存できるかどうかはわかりません。私の考えは以下の通りです。チュートリアルのCorDappでは、他のCordaチーム/エキスパートからのインプットを得たいと思っています。コルダで1つの非共有ファクトを定義する方法
主な変更点は、イニシエータの流れである:
- 開始するだけで、コマンドのを作成して、イニシエータのキー
- ので、これは他のものには送信されません「CollectSignaturesFlow」を起動しないでください
- verify()の後に "FinalityFlow"を呼び出すと、これは元帳にコミットされます
以下は上記のポイントのコードです。
override fun call(): SignedTransaction {
// We create a transaction builder
val txBuilder = TransactionBuilder()
val notaryIdentity = serviceHub.networkMapCache.getAnyNotary()
txBuilder.notary = notaryIdentity
// We create the transaction's components.
val ourIdentity = serviceHub.myInfo.legalIdentity
val iou = TemplateState(iouValue, ourIdentity, ourIdentity)
val txCommand = Command(TemplateContract.Create(), listOf(ourIdentity.owningKey))
// Adding the item's to the builder.
txBuilder.withItems(iou, txCommand)
// Verifying the transaction.
txBuilder.toWireTransaction().toLedgerTransaction(serviceHub).verify()
// Signing the transaction.
val partSignedTx = serviceHub.signInitialTransaction(txBuilder)
// Finalising the transaction.
return subFlow(FinalityFlow(partSignedTx)).single()
}
このコメントはありがとうございます。だから、たとえこれが共有の事実ではないが、ボールトに格納されている事実だから、それを更新したり削除したりするには、入力と出力を使うべきだがVaultから元のデータを更新または削除しないでください.Corda自体は、物理的に状態を更新/削除する機能も提供していません。私は正しいですか? –
Roger氏は、Cordaの中核プロジェクトであるコマーシャル・ペーパーのデモの流れで、トランザクションとその出力状態をボールトに記録するために 'serviceHub.recordTransactions(listOf(tx)) 'を使用する' selfIssueSomeCommercialPaper'機能を持っていることに気付きました。 'FinalityFlow'の代わりに、このもう一つのアプローチが使えますか? –
あなたの最初のコメントに - はい!更新したり削除したりするには、トランザクションを使用します。 2番目のコメントに。 'recordTransactions'より' FinalityFlow'を使うことをお勧めします。 'FinalityFlow'は、必要ならば公証人をつかんで、' BroadcastTransactionFlow'を呼び出すことによってtxを必要な全てのパーティーに分配します。受信側は(BroadcastTransactionFlowに応答して)NotifyTransactionHandlerを実行し、tx依存関係を解決し、トランザクションを保存する。 –