Transactions are encoded based on the Contract ABI Specification. It is hard to get through, but these docs have all the answers to your question.
The transaction in question is passing in two parameters: a dynamic string (name) and a static bool (isFirst). When encoding the parameters, the EVM looks to see if the parameters are static or dynamic.
131 can't be encoded as just 0x83. From https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP:
For a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
0x83 is outside of that range, so this "self encoding" can't be used.
Otherwise, if a string is 0-55 bytes long, the RLP encoding consists of a single byte with ...
When you perform a call like contract.set(0x10, ....), this is encoded into a payload like "0x60fe47b10000000000000000000000000000000000000000000000000000000000000010". Where "0x60fe47b1" is the keccak256 encoded value of the method signature, and the rest of the data is the passed parameters (I can't recall atm how the parameters are encoded).
So, when you ...
You definitely need additional information to decode this data. The information you need is called the ABI which describes the format of the input data. The ABI is generated from the source code and if you have the source, you can generate the ABI using something like remix or Truffle.
If you don't have the source, you still may be able to get the ABI if you ...
If you are using web3, you can encode it with:
You can then decode the output with the following:
Encoding is based on the Contract ABI Specification. It is hard to get through, but these docs have all the answers to ...
I guess you are trying to decode erc20 transfer method.
You must use the object org.web3j.abi.datatypes.Address rather than String.class.
final Address address = (Address) refMethod.invoke( null, to, 0, Address.class);
and address.toString() is the real recipient of the ERC20 transaction.
is ethereumjs-tx-unsign along the lines of what you're hoping to accomplish?
if so.. and you're also interested in obtaining even more information (from the signature), then the unsign() function in ethereumjs-tx-sign is a good place to look.
It perhaps doesn't meet the "it would be nice to give it to someone non-technical and allow them to parse it without using tools I've provided" qualifier, but the Ethslurp tool may be of use to people with at least some technical knowhow.
(As mentioned in an answer to this very similar previous question: Symbolic decoding of a transaction for Solidity.)