У меня есть такая структура в моем файле model.cto:
namespace org.gov.budget
asset Tax identified by Id{
o String Id
--> TaxPayer payer
o Double amount
o Integer year
o Boolean processed
}
asset BudgetAccount identified by Id{
o String Id
o Double amount
}
participant Government identified by Id{
o String Id
--> BudgetAccount account
}
participant TaxPayer identified by PANID{
o String PANID
o String name
o Double income
o Integer taxSlab
}
transaction PayTax{
-->Tax tax
-->Government gov
}
Here is the implementation for the transaction.
async function payTax(tax){
tax.tax.amount = tax.tax.payer.income*tax.tax.payer.taxSlab*0.05;
tax.gov.account.amount+=tax.tax.amount;
tax.tax.processed = true;
let assetRegistry = await getAssetRegistry('org.gov.budget.BudgetAccount');
await assetRegistry.update(tax.gov.account);
assetRegistry = await getAssetRegistry('org.gov.budget.Tax');
await assetRegistry.update(tax.tax);
}
Теперь, когда я пытаюсь отправить транзакцию PayTax , вошедшая в систему как участник TaxPayer (не администратор) Я запускаюво все эти проблемы, что налогоплательщик не имеет доступа READ к ресурсам, участвующим в транзакции.Мне пришлось добавить два нижеприведенных правила, чтобы устранить первую проблему доступа к READ, связанную с тем, что государственный объект говорит «G1», но после этого выдает ошибку, говорящую, что у TaxPayer нет доступа READ к типу BugdetAccount «B1», который связан с «G1».».Нужно ли мне предоставлять доступ на чтение для каждого отдельного актива / участника / типа, доступ к которому осуществляется в рамках составного типа, как в BudgetAccount в Правительстве?Разве это не становится очень сложным, если много составных сущностей связаны друг с другом?
rule abc{
description: "Grant business network administrators full access to system resources"
participant: "org.gov.budget.TaxPayer"
operation: READ
resource: "org.hyperledger.composer.system.ParticipantRegistry"
action: ALLOW
}
rule abc4{
description: "Grant business network administrators full access to system resources"
participant: "org.gov.budget.TaxPayer"
operation: READ
resource: "org.gov.budget.Government"
action: ALLOW
}