
适用范围与设置思路
区块链应用设置有哪些常见问题,可以先从两个方面理解:应用连接哪个网络,合约允许哪个账户执行功能。以下讨论适用于以太坊网络及采用 OpenZeppelin 相应访问控制组件的合约;其他链或自行设计的权限系统,需要结合各自实现判断。
网络切换后,为什么余额和记录不同
以太坊网络文档说明,不同网络可以遵循相同协议,却保持独立状态。同一账户可用于不同网络,但余额与交易历史不会自动带过去。因此,切换环境后看到余额变化,首先应区分所查看的网络,不能据此认定原网络上的记录已消失。

配置记录应把网络与账户一起标明。单独记录一个地址,无法完整表达应用正在访问哪个环境中的账户状态。

测试环境应该怎样区分
以太坊网络文档区分了主网、公共测试网和本地开发网络:主网承载实际价值活动,公共测试网用于测试,本地网络便于快速迭代。应用功能验证与验证者运行测试的目标也不同,选择环境时需要对应测试任务。
测试计划应明确需要验证什么:本地功能是否正常、公共环境中的交互是否成立,或节点运行是否符合预期。网络名称相近,不代表用途相同;本地测试通过,也不能直接证明公共环境中的所有交互都已验证。
为什么管理员仍然无法调用功能
OpenZeppelin 的访问控制文档区分所有者控制与角色控制。Ownable 通过所有者身份限制功能;AccessControl 则按角色检查权限。拥有某个角色通常不代表可以分配该角色,负责管理角色的账户也不自动拥有对应业务角色。
例如,账户能够管理某项业务权限,却未必能直接执行该业务。排查时应分别确认功能要求的角色、调用账户实际持有的角色,以及谁有权管理该角色,避免把管理员理解成所有功能的通行证。
所有权变更与权限记录有哪些误区
OpenZeppelin 文档指出,放弃 Ownable 所有权会使受 onlyOwner 保护的功能无法再被调用;Ownable2Step 则要求新所有者确认接收。基础 AccessControl 不支持链上枚举角色成员,完整成员追踪需要结合角色变更事件或使用可枚举扩展。
因此,权限变更应同时考虑后续维护能力和记录方式。核对某个账户是否具备权限,与列出全部有权限的账户,是两种不同需求。应用界面的权限展示方式,应与合约实际提供的查询能力保持一致。