Hi,
Problem:
The Runtime.ScriptContainer is returning a generic object. This demands users to cast it into a transaction every time they want to use it:
var tx = (Transaction)Runtime.ScriptContainer;
Proposed Solution:
Since the ScriptContainer will always be a Transaction, the smart contract compiler can return a Transaction type instead of object.
Result:
var tx = Runtime.ScriptContainer;