簡體   English   中英

Hyperledger Composer - 找不到交易錯誤

[英]Hyperledger Composer - can't find transaction error

我正在使用超級賬本作曲家制作一個區塊鏈應用程序,並編寫了我的 cto、on transaction 和沒有可見錯誤的腳本文件。 但是,當我嘗試提交交易時,它返回此錯誤:錯誤:找不到任何要為 org.evidence.net.evidenceDeposit 執行的交易。

這是我的 CTO 文件:

namespace org.evidence.net

enum type {
  o storage
  o device
  o physical
  
}

enum status {
 o collected
 o stored
 o withdrawn
}

asset EvidenceItem identified by evidenceItemId {
  o String evidenceItemId
  o String caseNo
  o type Type
  o status Status
  o String optionalHash optional
  --> person Holder
}

abstract participant person identified by id {
  o String id
  o String firstName
  o String lastName
}

participant Investigator extends person {
  
}

participant EvidenceManager extends person {
  
}

participant FRT extends person {
  
}

transaction evidenceDeposit {
  --> EvidenceItem EvidenceItem
  --> EvidenceManager EvidenceManager
}

event FirstDeposit {
  o String evidenceItemId
  o String  id
}

這是我的腳本文件:

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/**
* Transfer evidence from FRT to Evidence Manager
* @param (org.evidence.net.evidenceDeposit} tx - the evidenceDeposit transaction
* @transaction
*/

const NS = 'org.evidence.net';


async function evidenceDeposit(tx) {
    // get asset registry for evidenceItem
  const evidenceItemRegistry = await getAssetRegistry(NS + '.evidenceItem');
  
  //Get participant registry for Evidence Manager
  const EvidenceManagerRegistry = await getParticipantRegistry(NS + '.EvidenceManager');
  
  const evidenceItem = await evidenceItemRegistry.get(tx.evidenceItem.getIdentifier());
    //Make sure that the evidenceItem exists
  
  if (!evidenceItem) {
    throw new Error(' Evidence with id ${tx.evidenceItem.getIdentifier()} does not exist');
    exit();
  }
  
  if (evidenceItem.status !== 'collected') {
    throw new Error('Evidence with id ${tx.evidenceItem.getIdentifier()} is not in collected status');
  }
  
  // Get Evidence Manager ID
  const EvidenceManagerID = tx.EvidenceManager.getIdentifier();
  
 //Make sure Evidence Manager exists
  const EvidenceManager = await EvidenceManagerRegistry.get(EvidenceManagerID);
  if(!EvidenceManager) {
    throw new Error('Evidence Manager with id ${EvidenceManagerID} does not exist');
  }
  
  //Update evidenceItem with new owner
  tx.evidenceItem.holder = tx.EvidenceManager;
  tx.evidenceItem.status = 'stored';
  
  //Update the asset in the asset registry
  await evidenceItemRegistry.update(tx.evidenceItem);
  
  //Create deposit event
  let FirstDepositEvent = getFactory().newEvent(NS, 'FirstDeposit');
  FirstDepositEvent.evidenceItemId = tx.evidenceItem.evidenceItemId;
  FirstDepositEvent.id = tx.EvidenceManager.id;
  
  // Emit the Event
  emit(FirstDepositEvent);
}

我環顧四周,似乎找不到問題所在。 任何幫助表示贊賞。

請參閱下面的自述文件,因為 Hyperledger Composer 已被棄用一年多。 https://github.com/hyperledger/composer/blob/master/README.md

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM