#11088·eos

为什么当执行内联操作时,我的本地区块链不需要 eosio.code 权限?

作者: oliviera9创建于 2022年5月8日更新于 2022年5月27日

我正在运行一个本地区块链,使用以下命令: nodeos -e -p "eosio" --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --delete-all-blocks > /dev/null 2>&1 & (nodeos v2.0.6) 我有一个暴露此操作的合约,并部署到了 'contract' 帐户: cpp void token::action1(const name &sender, const asset &quantity, const string &memo) { action( permission_level{sender, "active"_n}, get_self(), "action2"_n, std::make_tuple(sender, quantity, memo, std::vector<uint8_t>(), std::vector<uint8_t>()) ).send(); } 使用以下命令调用该操作: cleos push action contract action1 '["account1", "1 TTT", ""]' -p account1@active 将相同的操作推送到主网返回: Error 3090003: 提供的密钥、权限和延迟不符合声明的授权 请确保您的钱包中有相关的私钥,并且您的钱包已解锁。 错误详细信息: 交易声明了权限 '{"actor":"account1","permission":"active"}',但没有在提供的 0 毫秒延迟下为其生成签名,提供的权限 [{"actor":"contract","permission":"eosio.code"}],提供的密钥 [],以及延迟最大限制为 3888000000 毫秒 pending console output: 我需要为 account1@active 添加合约 eosio.code 权限(在帐户中),以便其正确运行。 为什么我的本地区块链在未设置 eosio.code 权限的情况下就接受了该交易? 是否因为启动本地区块链时缺少了一些参数?