Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

May org.json.JSONObject used in org.hyperledger.fabric.contract.execution.JSONTransactionSerializer lead submit payloads not matching?

オープン
#361 コメント 7 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
java

調査の方向性

org.hyperledger.fabric.contract.execution.JSONTransactionSerializer と、スタックトレースに示されている GatewayClient.endorse 呼び出しから始めてください。汎用の戻り値型 Response と、提供されている Asset およびコントラクトインターフェースの定義を使用して、endorsement の不一致を再現してください。汎用の戻り値型がサポートされているかどうかを確認し、その動作を文書化または修正できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

bug help wanted

When I call a submit method from application via gateway, I received an Exception below.

Caused by: org.hyperledger.fabric.client.EndorseException: io.grpc.StatusRuntimeException: ABORTED: failed to collect enough transaction endorsements, see attached details for more info
        at org.hyperledger.fabric.client.GatewayClient.endorse(GatewayClient.java:74)
        at org.hyperledger.fabric.client.ProposalImpl.endorse(ProposalImpl.java:76)
        at org.hyperledger.fabric.client.Proposal.endorse(Proposal.java:64)
        at pers.u8f23.fabric.app.api.AbstractAssetContractSubmit.createAsset(AbstractAssetContractSubmit.java:13)
        at pers.u8f23.fabric.app.Main.chaincodeOperations(Main.java:84)
        at pers.u8f23.fabric.app.Main.main(Main.java:65)
Caused by: io.grpc.StatusRuntimeException: ABORTED: failed to collect enough transaction endorsements, see attached details for more info
        at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:268)
        at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:249)
        at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:167)
        at org.hyperledger.fabric.protos.gateway.GatewayGrpc$GatewayBlockingStub.endorse(GatewayGrpc.java:455)
        at org.hyperledger.fabric.client.GatewayClient.endorse(GatewayClient.java:72)
        ... 5 more

Detail message attached to this Exception is ProposalResponsePayloads do not match.

Returned type is a generic class. Both the generic type and the type argument are defined as type in fabric demo .

public interface AbstractAssetContractSubmit {
  Response<Asset> createAsset(Context context, String value);

  Response<Void> deleteAsset(Context context, String assetId);

  Response<Void> updateAsset(Context context, String assetId, String value);
}

@DataType
public final class Response<T> {
  @Property
  private final T body;

  @Property
  private final int code;

  @Property
  private final String msg;

  public Response(@JsonProperty("body") T body, @JsonProperty("code") int code,
      @JsonProperty("msg") String msg) {
    this.body = body;
    this.code = code;
    this.msg = msg;
  }

  public T getBody() {
    return this.body;
  }

  public int getCode() {
    return this.code;
  }

  public String getMsg() {
    return this.msg;
  }
}



@DataType
public final class Asset {
  @Property
  private final String id;

  @Property
  private final String creatorId;

  @Property
  private final String ownerId;

  @Property
  private final long createTime;

  @Property
  private final long lastTransferTime;

  @Property
  private final long lastUpdateTime;

  @Property
  private final String assetValue;

  public Asset(@JsonProperty("id") String id, @JsonProperty("creatorId") String creatorId,
      @JsonProperty("ownerId") String ownerId, @JsonProperty("createTime") long createTime,
      @JsonProperty("lastTransferTime") long lastTransferTime,
      @JsonProperty("lastUpdateTime") long lastUpdateTime,
      @JsonProperty("assetValue") String assetValue) {
    this.id = id;
    this.creatorId = creatorId;
    this.ownerId = ownerId;
    this.createTime = createTime;
    this.lastTransferTime = lastTransferTime;
    this.lastUpdateTime = lastUpdateTime;
    this.assetValue = assetValue;
  }

  public String getId() {
    return this.id;
  }

  public String getCreatorId() {
    return this.creatorId;
  }

  public String getOwnerId() {
    return this.ownerId;
  }

  public long getCreateTime() {
    return this.createTime;
  }

  public long getLastTransferTime() {
    return this.lastTransferTime;
  }

  public long getLastUpdateTime() {
    return this.lastUpdateTime;
  }

  public String getAssetValue() {
    return this.assetValue;
  }
}

Does this chaincode api support java generic type as method return type?
Anyone is welcome to answer this question.

主要言語
Java
スター
322
フォーク
210
平均マージ
15時間 16分
マージ済み PR(30日)
29

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

hyperledger/fabric-chaincode-java のほかの issue

hyperledger/fabric-chaincode-java の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。