As of the small block size
i think consider how will we store the tx data on the blockchain with the least possible space
so i suggest using account based model instead of UTXO model
Here is a small comparison between the two
UTXO "used by BTC"
The tx size can be calculated like this
inputs*180 + outputs*34 + ~10 extra bytes
example : 4*180+2*34 = 798 bytes
UTXO has kinda added pseudo-anonymity and the flexibility to change addresses
while anyone with some free time can get the tree of all the txs based from the same source of BTC
Account based model "used by ETH as example"
The tx size is around 109 bytes
and it consists of
f86b length
80 nonce (0: this is the minimum an account can have)
85 0ba43b7400 gas price
82 5208 gas limit (this is fixed for simple payments)
94 7917bc33eea648809c285607579c9919fb864f8f (address, always 20 bytes)
87 03baf82d03a000 (value, in theory this can be shrunken to zero)
80 (data, already zero length)
25 (V, one byte)
a0 067940651530790861714b2e8fd8b080361d1ada048189000c07a66848afde46 (R)
a0 69b041db7c29dbcc6becf42017ca7ac086b12bd53ec8ee494596f790fb6a0a69 (S)
Account based model uses less addresses
and less size per TX
also changing addresses too often will lower the potential of accumulating mining power
I COpied this from iMoprheus' reply in taucointalk forum.
Notes on design TAU block structureWe design the block and transaction structure to achieve following:
-support fast communication in mobile environment, particular to avoid fork caused by global network latency.
-small size to allow mobile device to download blockchain fast for network grow decentralize easier.
-transparent mining to increase detection on 51%, this is not design to completely avoid it.
-each block contain 50 transactions, one block every 5 minutes.
TAU Block:-Blockheader: 1–4; the block header design purpose is to allow mobile nodes to find out which chain has the most accumulative difficulty. Using timestamp and public key is sufficient to compute each block target base and difficulty number. Header is small of 122 bytes, full day’s header info is 35Kbyte. With this small data set, it is efficient for nodes to find most difficult chain to avoid forks.
-timestamp: 32 bits
-previousHeaderHash: 160 bits; use SHA256, RIPEMD 160
-generatorPublicKey: 264 bits; compressed public key in ECDSA.
-block signature: 520 bits; V,R,S format, possible to retrieve public key. the reason we still include public key here is for block headers to contrust accumulative difficulty.
-version: 8bits
-option: 8bits; this is left for future use.
-“Hit” number is first 8 bytes of hash(previous block generator public key 64bits+ current generator public key 64 bits); with this network random number, TAU can predict the future miner sequence up to certain extent to increase the detection of 51% attack.
The block common area is total 992 bits, 124 bytes.
TAU Transaction: we only support transaction from one address to one address.
-version: 8 bits; keeping version is for future upgrade to control the transition grace peroid.
-timestamp: 32 bits; transaction will expire 24 hours, that is 288 blocks. on TAU, every 144 blocks it will lock an checkpoint, so if an -transaction expire, there are 2 check points to confirm that .
-toAddess: 160 bits, this is SHA256-ripemd 160 on a public key that is recovered from transaction signature.
-amountTAU: 40 bits
-feeTAU: 16 bits
-transaction signature: 520
Every transaction is total 776 bits, 97 bytes.