1

here is what i am trying to do :

  • users will sign a specific action which will take their username, permission_name, smart_contract_name, action_name, public_key
  • i am trying to assign the user username a new permission permission_name then linkauth the contract name and action name with a specified public key.

here is my code :

void bypasssign::link_permission(struct account_t& data,name permission,name contract_name,name sm_action){
    link_auth_args link_args {
        .account = data.name,
        .code = contract_name,
        .type = sm_action,
        .requirement = permission
    };
    action linker = action(
        permission_level(data.name, name("active")),
        "eosio"_n,
        "linkauth"_n,
        std::move(link_auth_args)
    );
    linker.send();
}
void bypasssign::create_permission(struct account_t& data, name permission) {
    key_weight active_pubkey_weight {
        .key = data.active_key,
        .weight = 1
    };
    authority active_auth {
        .threshold = 1,
        .keys = {active_pubkey_weight},
        .accounts = {},
        .waits = {}
    };
    recover_args recovery {
        .account = data.name,
        .permission = permission,
        .parent = name("active"),
        .auth = active_auth
    };
    action recover = action(
        permission_level(data.name, name("active")),
        "eosio"_n,
        "updateauth"_n,
        std::move(recovery)
    );
    recover.send();
}

the account_t struct only contains 2 attributes name and active_key. when i try to execute these function i get an error back from eosio

transaction declares authority '{"actor":"bypassasign1","permission":"active"}', but does not have signatures for it under a provided delay of 0 ms, provided permissions [{"actor":"bypassasign1","permission":"eosio.code"}], provided keys [], and a delay max limit of 3888000000 ms

anyone know what i am doing wrong? thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.