Hyperledger Fabric 1.4: как мы определяем активы? - PullRequest
0 голосов
/ 04 марта 2019

Ранее я разрабатывал свое приложение на Hyperledger Composer.Сейчас я пытаюсь перенести приложение в Hyperledger Fabric 1.4.

Я реализовал учебное пособие по коммерческим бумагам, учитывая документацию по Fabric 1.4, , которую вы можете найти здесь .Все работает отлично.

Теперь я хочу адаптировать это к своему приложению и хочу определить больше активов.

У них есть файл paper.js по адресу Commercial-Paper / Organization / Digibank / Contract /lib, это определение «бумажного» актива?

Если мне нужно определить дополнительные активы, могу ли я также создать файл myasset.js в том же месте, а затем вызвать смарт-контракт?

или есть лучший способ определить активы?

PS: я пытаюсь сопоставить активы из Hyperledger composer с фабрикой Hyperledger 1.4.

Кроме того, как вы определяете отношения между активами и участниками или другими активами?В Composer мы привыкли использовать -> для определения отношений, как нам достичь того же, что и в fabric-1.4?

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Поскольку вы уже ответили на вопрос самостоятельно, я бы хотел добавить только идентификацию пользователя вашего собственного ответа.

Стоит отметить, что существует CID Lib .Благодаря этому и концепции AttributeBasedAccessControl вы можете идеально управлять доступом к запросам / вызовам по цепочке.

Надеюсь, что это поможет и добавит немного больше понимания к вашему ответу:)

0 голосов
/ 04 марта 2019

Мне кажется, я нашел ответ на свой вопрос и надеюсь, что это поможет любому, кто находится в аналогичной ситуации (переход от Hyperledger Composer к Fabric 1.4)

ctx.stub.putState(key, data); 

Мы просто используем приведенный выше коддобавить актив.Очень упрощенная версия найдена в примере с fabcar.

async createCar(ctx, carNumber, make, model, color, owner) {
    console.info('============= START : Create Car ===========');

    const car = {
        color,
        docType: 'car',
        make,
        model,
        owner,
    };

    await ctx.stub.putState(carNumber, Buffer.from(JSON.stringify(car)));
    console.info('============= END : Create Car ===========');
}

Здесь мы добавляем автомобиль, который является активом.

В примере с коммерческими документами они сделали это, используяОбъектно-ориентированный подход.С помощью paper.js они просто создают объект «paper» (класс paper расширяет класс состояний. Класс состояний имеет методы для создания и разделения ключей, которые будут использоваться позже), а затем передает его в «paperlist», который затем использует методы, определенныев statelist.js (класс paperlist расширяет класс statelist, в котором есть все методы для записи состояния в книгу) для создания этого актива с помощью следующего кода

 async addState(state) {
    let key = this.ctx.stub.createCompositeKey(this.name, state.getSplitKey());
    let data = State.serialize(state);
    await this.ctx.stub.putState(key, data);
}

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

И, возвращаясь к последнему вопросу о взаимоотношениях, я пока не нашел конкретного ответа, но я полагаю, что вы можете достичь этого, передавидентификатор участника или идентификатор ресурса (например, пользователь идентифицируется по userId, поэтому мы просто передаем userId) в объекте данных.

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

Пожалуйста, не стесняйтесь исправить мое понимание примеров Гиперледжера.Я здесь, чтобы учиться:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...