When providing arguments to solidity functions, you may need to type array values on the command line. Ideally, array literals should tolerate spaces before and after commas, but sbt-ethereum requires arrays to not contain spaces (except within quoted strings, for string arrays).
This is good:
> ethTransactionInvoke calculator sum [1,2,3]
This will fail, don’t do this:
> ethTransactionInvoke calculator sum [1, 2, 3]
Usually, wherever an address is required, you can specify the address as raw hex, as an address alias, or as an ENS name. However, when specifying arrays of addresses (as arguments to solidity functions), only raw hex addresses are currently supported.
sbt-ethereum takes full control of the Solidity import process, and combines all resources into a single generated solidity file. Even if your code has no imports, solidity will embed some comments into the generated file that is actually compiled, so the line numbers won’t match.
To see precisely the files that got compiled, and source code whose line numbers match compiler errors, look in your projects’s
target/ethereum/solidity directory for a file ending in
We’ll hopefully provide a convenience for this shortly.
Solidity libraries come in too basic flavors. They can be defined to contain purely
internal function, in which case they must be compiled with the contracts that use them. sbt-ethereum supports these libraries.
But Solidity libraries can also be defined with external functions, in which case they are isolated constructs that must be separately predeployed. sbt-ethereum does not currently support linking to such libraries.
(This shouldn’t be difficult to add, but we’ve rarely wanted it. Let us know if this is a feature you need!)
It might work! It might not.