wheat
wheat
No match for argument: python-pip Package openssl-1:1.1.1k-5.el8_5.x86_64 is already installed. Package curl-7.61.1-22.el8.x86_64 is already installed. Package which-2.21-16.el8.x86_64 is already installed. Error: Unable to find a match: python-pip ./install.sh: line 129:...
# 描述: 我采用的是BCOS3.7.3版本,solidity0.8版本,我的场景是业务智能合约B (假设地址为0xB),通过预编译合约TableManager创建了一张表table1(假设地址为0xT),这时候,由于table1是全局的,也就意味着所有联盟成员均可以通过控制台直接修改表table1中的数据。为了table1表的数据安全,我期望只有智能合约0xB可以调用table1,以此达到数据表数据安全的目的,我采用如下方式来进行操作: 1、设置操作数据接口的权限为白名单模式 2、并且设置业务合约B的地址为调用白名单, 操作指令如下 ``` setMethodAuth 0xT "insert((string,string[]))" white_list // 这里只列出了insert的权限 openMethodAuth 0xT "insert((string,string[]))" 0xB ``` 然后,我发现操作完成后,没有达到我的预期目的,所有的普通地址账号调用业务智能合约B,均无法操作数据库表table1,必须通过openMethodAuth 给某个地址添加白名单之后才能调用。 # 疑问 1、我这种方式是否无法实现我的目标:某一张表只允许特定的业务智能合约可以修改。 2、是否有某种方式,可以实现某一张数据库表只能由某个特定的地址操作数据。 # 建议 1、智能合约A调用table预编译智能合约的过程中,建议验证权限的取值为智能合约A的地址,即msg.sender,而不是tx.origin。否则table数据库表的权限无法限制。