Ошибка при создании актива «ValidationException: неожиданные свойства для типа org.hyperledger.composer.system.AddAsset: registryType, registryId» - PullRequest
0 голосов
/ 21 мая 2019

Я новичок в Hyperledger Composer.Я слежу за руководством композитора по взаимодействию с другой бизнес-сетью hyperledger_composer_tutorial

Я выполнил упоминание шага 1,2,3, упомянутое в учебнике.Пока я пытаюсь выполнить шаг 4: Создать сборку

Я могу создать участника в бизнес-сети A. Я получаю ошибку при создании актива в бизнес-сети A

ValidationException: Unexpected properties for type org.hyperledger.composer.system.AddAsset: registryType, registryId

error image

вот мой код

Сеть A

/**
 * My commodity trading network
 */
namespace org.example.mynetwork
asset Commodity identified by tradingSymbol {
    o String tradingSymbol
    o String description
    o String mainExchange
    o Double quantity
    --> Trader owner
}
participant Trader identified by tradeId {
    o String tradeId
    o String firstName
    o String lastName
}
transaction Trade {
    --> Commodity commodity
    --> Trader newOwner
}

2) logic.js

        /**
         * Track the trade of a commodity from one trader to another
         * @param {org.example.mynetwork.Trade} trade - the trade to be processed
         * @transaction
         */
        async function tradeCommodity(trade) {
            trade.commodity.owner = trade.newOwner;

            const otherNetworkData = await getNativeAPI().invokeChaincode('other-tutorial-network', ['getResourceInRegistry', 'Asset', 'org.example.mynetwork.Commodity', trade.commodity.tradingSymbol], 'composerchannel');                    
            const stringAsset = new Buffer(otherNetworkData.payload.toArrayBuffer()).toString('utf8');
            const asset = getSerializer().fromJSON(JSON.parse(stringAsset));

            trade.commodity.quantity = asset.quantity;

            const assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');
            await assetRegistry.update(trade.commodity);
        }

Сеть B

/**
 * My commodity trading network
 */
namespace org.example.mynetwork
asset Commodity identified by tradingSymbol {
    o String tradingSymbol
    o String description
    o String mainExchange
    o Double quantity
    --> Trader owner
}
participant Trader identified by tradeId {
    o String tradeId
    o String firstName
    o String lastName
}
transaction Trade {
    --> Commodity commodity
    --> Trader newOwner
}
2) logic.js

/**
 * Track the trade of a commodity from one trader to another
 * @param {org.example.mynetwork.Trade} trade - the trade to be processed
 * @transaction
 */
async function tradeCommodity(trade) {
    trade.commodity.owner = trade.newOwner;
    let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');
    await assetRegistry.update(trade.commodity);
}

Как мне решить эту проблему ??

1 Ответ

0 голосов
/ 22 мая 2019

Я считаю, что JSON, который вы предоставляете в качестве ввода в командной строке, может быть неправильным, так как вы добавляете актив типа Commodity.

Вместо этого попробуйте эту команду

composer transaction submit --card networkA -d '{"$class": "org.example.mynetwork.Commodity","tradingSymbol": "Ag","owner": "resource: org.example.mynetwork.Trader#bob@example.com","description": "Some", "mainExchange": "exhange","quantity": 25}'
...