Цепной код NodeJS Fabric Hyperledger - получение идентификатора вызывающего абонента - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь разработать цепной код, который должен создавать и хранить автомобильный объект и позволяет передавать право собственности на автомобиль.

Когда вызывается «createCar», я хотел бы указать владельцу автомобиля идентификатор / сертификат того, кто отправляет транзакцию.

Я также разрабатываю метод, который позволяет передать право собственности на автомобиль. В этом методе я хотел бы вставить условие, которое вызывает исключение, если текущий пользователь (который вызвал транзакцию) не является текущим владельцем автомобиля.

//arg[0]=identifier - arg[1]=model
async createCar(stub, args) {
  console.info('============= START : Create Car ===========');
  if (args.length != 2) {
    throw new Error('Incorrect number of arguments. Expecting 2');
  }

  console.info("Creator",stub.getCreator());

  var car = {
    model: arg[1],
    owner: //.... - Here store the id of who invoked the transaction
  };

  await stub.putState(args[0], Buffer.from(JSON.stringify(car)));

  console.info('============= END : Create Car ===========');

  return true;
}

//arg[0]=identfier - arg[1] = New owner
async transferCar(stub,args){
    let carAsBytes = await stub.getState(arg[0]);
    let car = JSON.parse(carAsBytes);

    if (car.owner != /*... - new user that invoked the transaction*/) {
        throw new Error('Invalid owner');
    }

    car.owner = arg[1];

    await stub.putState(args[0], Buffer.from(JSON.stringify(car)));

    return true;
}

Кто-нибудь знает, что я могу сделать?

1 Ответ

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

Вы можете использовать getCreator (), который будет возвращать объект идентификации отправителя вызова цепного кода.

...