That contract can run whatever “code” signed by me. With this contract and my own TokenScript file, then I have a SuperToken which can combine whatever features I want from other contracts(tokens)
You probably don't want a super contract that can do absolutely everything by your signed input, since that also means maximum attack surface. But you might benefit from deploying a few types of pre-audited smart contract templates from your wallet. I list 3 examples of features that such templates can provide. You ask for "combine whatever features", in one deployment you can mix more than one feature in, provide there is an audited template for that feature.
One example is that it enables security features. For example, a wallet contract can require normal transactions (like spending) signatory be key 𝑘 while a key (or several keys) 𝑟 can be used to reässign a new key for it. If the user loses his wallet, he can get the owner of 𝑟 (or one of the owners) to reässign his key. Same could be done to enable advanced security rules like spending threshold, 𝑒.𝑔. spending more than 10Ξ needs to be co-signed by a hardware wallet.
The second example is to batch transactions in one. Say, you ask Ether for a cryptokitty and bid for a cryptodoggy with that Ether, and you don't want to lose the cryptokitty in the case crypto doggy happen to be sold out between the two transactions. This might sound like an edge case but more complicated cases are common 𝑒.𝑔. you may want to stake your DAI to loan some Ethers to buy some kitty and don't want to pay the staking fee if kitty purchase isn't successful.
The third is the capacity to create authorisation for someone else to redeem your asset. Let's say that you give away free Ether to a friend. He probably will never use it because he didn't work to acquire it. You can, instead, use a smart contract, send an authorisation to him that he can use it to redeem money from your contract before expiry. That way if he didn't do anything your Ether never leaves your contract. It's also an insurance against "Bob sent me a wrong address and I've already sent the money" scenario. Authorisations can be common in business, 𝑒.𝑔. you can subscribe a coffee delivery service by providing a monthly authorisation so that they can take money out of your contract limited by the amount and frequency. This is similar to Direct Debit in banking systems. You can even program that authorisation to create 𝑝𝑟𝑜𝑡𝑜𝑐𝑜𝑙𝑠, 𝑒.𝑔. a youtuber receives money only if he delivers the youtube video, but that's for another post.
There are more elaborate template features such as enabling chargeback, but I'll end my enumeration here.
In all cases, TokenScript support is important. I hope that is apparent. I'll give just one example:
- In the case of wallet contract, the user wants to receive info like "One of the recovery key owners has agreed to help you to reset the wallet key, you need 2 out of 3 to do this." and be guided to finalise the process. That has to be done with TokenScript's capacity to program the UX for state transition.
The TokenScript can be self-signed and issued directly from the user's wallet since that's where the contract is created and the signing key is stored.
This not only soloves flight/hotel issues, it can improve UX a lot. Now if I want brower from Compound instead of CDP, I have to close CDP first, then brower from compound. with such contract, it can be in 1 step.
That's is the reason of defining actions in
<cards> element. It is not because we happen to have built actions with the visual of a card - it is used to convey the idea that a user can stack multiple cards (multiple actions) and send them off in one go, like playing cards (pairs, straights, flushes, full houses), It's all taken into consideration in the design of TokenScript yet its implementation is non-trivial.
But with batch transactions contract, Can I put what I want to batch as the input to use the contract to batch whatever transactions I want.
That means, with the same contract, I can book hotel+flight, I can move DAI between Compound and dydx, I can move debit between compound and CDP, I can do ETH to DAI to CDAI to Uniswap CDAI.
Yes if you created your contract through a template and your transactions only use attestations already in your wallet.
And partly yes if you don't have a contract of your own but the contract you want to use supports this kind of batch feature (like ERC875 which allows batching transfer). Of course you are always limited by the underlying blockchain, e.g. Ethereum might restrict how many operations are allowed in a transaction even if you pay enough gas, or some plasma chains don't work with others directly, or that your 2nd transaction requires a website to generate an attestation to you as a result of the 1st transaction...