Я думаю, что ответ, это зависит.
В вашем примере, отказ в доступе к транзакции org.company.biznet.UpdateTransaction приведет к org.company.biznet.Employee участники не могут использовать эту транзакцию для обновления своих данных, даже если в противном случае им это будет разрешено.
Сказав это, вы должны помнить о системных транзакциях, поскольку они предоставляют другой потенциальный маршрут.для org.company.biznet.Employee участников, чтобы обновить свои собственные данные.
Например, я попробовал это в basic-sample-network , заменив EverybodyCanSubmitTransactions правило с
rule NobodyCanSubmitTransactions {
description: "Do not allow all participants to submit transactions"
participant: "org.example.basic.SampleParticipant"
operation: CREATE
resource: "org.example.basic.SampleTransaction"
action: DENY
}
Эта бизнес-сеть включает в себя OwnerHasFullAccessToTheirAssets , и я смог использовать org.hyperledger.composer.system.UpdateAsset транзакция для обновления участников, владеющих активом, с помощью команды
composer transaction submit -d "$(cat txn.json)" -c party1@basic-sample-network
Где содержится txn.json,
{
"$class": "org.hyperledger.composer.system.UpdateAsset",
"resources": [
{
"$class": "org.example.basic.SampleAsset",
"assetId": "ASSET1",
"owner": "resource:org.example.basic.SampleParticipant#PARTY1",
"value": "5000"
}
],
"targetRegistry": "resource:org.hyperledger.composer.system.AssetRegistry#org.example.basic.SampleAsset"
}
Это не сработает, если вы заблокировали системное пространство имен в своих правилах ACL.(ACL нужно много думать!)
Другая важная вещь, которую следует помнить о ACL, это то, что они не применяются, если вы используете метод getNativeAPI для доступа к данным через API-интерфейсы Hyperledger Fabric вваш процессор транзакций функционирует.
Ознакомьтесь с ссылкой на системное пространство имен вместе с ACL-ссылкой , плюс есть руководство по ACL , которое может бытьИнтересно, если вы этого не видели.