チェーンコードはスマートな契約であり、ビジネスロジックとルールを実装しています。ビジネスロジックごとに共有元帳のエンティティ/アセットを作成して操作します。しかし、ファブリックの例では、readMarble、getAllMarblesforOwnerなどのヘルパーメソッドもチェーンコードで実装されています。だから私の質問は、ビジネスロジックだけを実装するチェーンコードを維持する一方、共有元帳と相互作用し、ヘルパーメソッドを書くための他の提案された方法ですか?チェーンコードデータのためのヘルパーAPIを書くために推奨される方法は何ですか?
1
A
答えて
1
ChaincodeはそれがChaincodeインターフェイスを実装する必要があり台帳と対話するための1のための唯一のインタフェースです。状態を読んで、
shim.ChaincodeStubInterface
は、このような状態の変更などの台帳と対話するAPIのセットを公開し
type mychaincode struct {
}
func (cc *mychaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
panic("not implemented")
}
func (cc *mychaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
panic("not implemented")
}
と他の多くのもちろん、あなたができる補助機能を定義するために、より明確で素敵なものを維持します
type mychaincode struct {
}
func (cc *mychaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
panic("not implemented")
}
func (cc *mychaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
function, args := stub.GetFunctionAndParameters()
if args['0'] == "aux" {
// Call aux function
cc.auxFunction(args)
}
}
func (cc *mychaincode) auxFunction(someparameters interface{}) {
// Do some very important logic here
}
0
データにアクセスすることについてのスコープルールがあります:chaincodeによって作成されたデータの任意の部分(キーと値のペア)が唯一かもしれそのチェーンコードにアクセスできます。チェーンコードは、誰がデータを読み書きできるかを決定し、適切なアクセス制御を提供します。
ブロックやトランザクションを通過するなどの元帳構造とやりとりするには、qscc(クエリシステムチェーンコード)と呼ばれるシステムチェーンコードがあり、チャネル、ブロック、トランザクションに関する情報を照会する機能を提供します。
情報モデリングの観点からは、複数のチェーンコードを使用することができます。各チェーンコードは、特定の部分を管理する責任があり、集約を提供する部分もあります。たとえば、自動車エンジンをモデル化するには、EngineChaincode、CylinderChaincode、SparkplugChaincode、OilSumpChaincodeなどが必要です。EngineChaincodeは、他のチェーンコードを呼び出してクエリに関する情報を集計します。
関連する問題
- 1. Websocket APIを文書化するための推奨方法
- 2. APIキーと秘密をUWPアプリケーションに保存するための推奨される方法は何ですか?
- 3. 多くのストリーミングデータをデータベースに保存するために推奨される方法は何ですか?
- 4. APIを保護するための推奨される方法/認証エンジン
- 5. SlickGridをスタイルするために推奨されるアプローチは何ですか?
- 6. モジュラーCアプリケーションを作成するための推奨方法は何ですか?
- 7. TensorFlowにサマリーライターの複数のランを格納するために推奨される方法は何ですか?
- 8. ボックスを表すために推奨されるクラスは何ですか?
- 9. EclipseのJUnitにHamcrestを統合するための推奨される方法は何ですか?
- 10. JenkinsのCheckstyleを有効にするために推奨される方法は何ですか?
- 11. datetimeオブジェクトをミリ秒のunixタイムスタンプに変換するために推奨される方法は何ですか?
- 12. オンラインサービス(WebAPI)からAzure SQLに接続するための推奨される方法は何ですか?
- 13. Webアプリケーションに非システムPerlを使用するための推奨される方法は何ですか?
- 14. active_model_serializers 0.10.0でキャッシュを無効にするために推奨される方法は何ですか?
- 15. ImmutableJS Recordの複数のフィールドを更新するための推奨される方法は何ですか?
- 16. Cエクステンションのdistutilsベースのsetup.pyで作業するための推奨される方法は何ですか?
- 17. Rails:外部ソースからxmlを取得するための推奨される方法は何ですか
- 18. S3に格納されたCSVファイルを解析するための推奨されるアプローチは何ですか?
- 19. シームレスイバリアブル配列の値を設定するための推奨される方法は何ですか?
- 20. MVVMCrossアプリケーションで例外を処理するための推奨される方法は何ですか?
- 21. ES6 Reactコンポーネント内でメソッドを再利用するための推奨される方法は何ですか?
- 22. MVCのviewModelからモデルを取り込むための推奨される方法は何ですか?
- 23. インスタンス変数とメソッドにアクセスするための推奨される方法は何ですか?
- 24. H2 1.3.175から1.4.195に移行するための推奨される方法
- 25. ビューからセッションオブジェクトにアクセスするための推奨される方法
- 26. HTML/PHPで変数を渡すために推奨される方法は?
- 27. Adobe AIRのゲームを書くための推奨事項
- 28. 私のaws APIを承認するための推奨方法は何ですか
- 29. コードネームワンでツールバーのサイズを変更するための推奨される方法
- 30. ReactアプリケーションでApollo Clientを渡すための推奨される方法は何ですか?