In my understanding, only implicit accounts can initiate a transaction. Then, if I am correct, the destination of SOURCE must be an implicit account, and the question arises.

I know various ways to convert a value between key_hash and address. So, this is not a critical issue. I am just wondering or thinking it would be nice if SOURCE returned key_hash. For example, we can use IMPLICIT_ACCOUNT and avoid ASSERT_SOME check.

Is there any reason, or the my understanding wrong?

1 Answer 1


It is for historical reason. Until the Babylon upgrade, smart contracts had the option to declare a manager at origination time and the manager could sign transactions whose source was the smart contract (so not only the amount of the transaction but also the fees were paid by the smart contract).

When the feature was removed, the type of the SOURCE instruction was not changed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.