Как работает HistorianRecord? Я хочу сохранить историю для всех транзакций на основе идентификатора актива - PullRequest
0 голосов
/ 03 сентября 2018

Как работает HistorianRecord? Я хочу сохранить историю всех транзакций на основе идентификатора актива. Как я могу добиться этого в ткани hyperldeger?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

для программного метода («Я хочу получить историю», а не сохранить), см. Переполнение стека для истории активов -> Хронология для конкретного участника (История активов), а затем для истории транзакций, Вы можете использовать что-то петлевой фильтр в конечной точке REST API транзакции, например. для Trade класса транзакции что-то вроде:

var options = {
    method: 'GET',
    uri: 'http://localhost:3000/api/Trade?filter='{%22where%22:{%22asset_id%22:%22resource:org.acme.biznet.Commodity#ABC%22}%2C %22include%22:%22resolve%22}'
    json: true
};

let results = await rp(options);
    //console.log("Return value from REST API is " + results);

results.sort(function(a, b) {
  if (a.timestamp > b.timestamp) return 1;
  if (a.timestamp < b.timestamp) return -1;
});

console.log(" ");
console.log(" ");
console.log(`TRANSACTION HISTORY for Asset ID:  ${results[0].commodity.tradingSymbol} is: `);
console.log("================================================== ");
console.log(" ");
for (const asset of results) {

      console.log("Type   Transaction Date          Transaction ID                                                     New Ownership     ");
     console.log("=====================================================================================================================");

     console.log(`${asset.$class.split(".").pop()}  ${asset.timestamp}  ${asset.transactionId}   ${asset.newOwner.tradeId}`);
 }
0 голосов
/ 03 сентября 2018

Эта история уже есть. Каждый раз, когда актив изменяется, создается новая транзакция, которая попадает в бухгалтерскую книгу, а это означает, что у вас уже есть история всех изменений, связанных с одним активом.

Вы можете убедиться в этом, поиграв с composer-площадка, и вы увидите поведение.

Система блокчейна, такая как Hyperledger, является неизменной. Это, однако, не означает, что вы не можете изменить свои активы. Это означает, что вы не можете изменить транзакцию, которая уже была совершена. Это самая большая вещь на самом деле.

Если вы создадите API отдыха с помощью composer-rest-api , вы получите конечные точки для всех ваших активов и конечную точку для исторической стороны. Проблема в том, что функциональности еще нет, поэтому вы не можете загрузить все изменения состояния для актива. Я считаю, что есть открытый билет, но на данный момент он еще не доступен.

...