https://ethfans.org/posts/smart-contracts-and-transaction-costs