gitlab.com/jokerrs1/Sia@v1.3.2/doc/Standard.md (about) 1 Standard Transaction Rules 2 ========================== 3 4 Some transactions will not be accepted by miners unless they appear in a block. 5 This is equivalent to the 'IsStandard' function in Bitcoin. This file dictates 6 the rules for standard Sia transactions. 7 8 Transaction Size 9 ---------------- 10 11 Consensus rules limit the size of a block, but not the size of a transaction. 12 Standard rules however limit the size of a single transaction to 32kb. 13 14 A chain of dependent transactions cannot exceed 250kb. 15 16 Double Spend Rules 17 ------------------ 18 19 When two conflicting transactions are seen, the first transaction is the only 20 one that is kept. If the blockchain reorganizes, the transaction that is kept 21 is the transaction that was most recently in the blockchain. This is to 22 discourage double spending, and enforce that the first transaction seen is the 23 one that should be kept by the network. Other conflicts are thrown out. 24 25 Transactions are currently included into blocks using a first-come first-serve 26 algorithm. Eventually, transactions will be rejected if the fee does not meet a 27 certain minimum. For the near future, there are no plans to prioritize 28 transactions with substantially higher fees. Other mining software may take 29 alternative approaches. 30 31 File Contract Rules 32 ------------------- 33 34 File Contracts that start in less than 10 blocks time are not accepted into the 35 transaction pool. This is because a file contract becomes invalid if it is not 36 accepted into the blockchain by the start block, and this might result in a 37 cascade of invalidated unconfirmed transactions, which may make it easier to 38 launch double spend attacks on zero confirmation outputs. 10 blocks is plenty 39 of time on the other hand for a file contract to make it into the blockchain. 40 41 Signature Algorithms 42 -------------------- 43 44 Miners will reject transactions that have public keys using algorithms that the 45 miner does not understand. 46 47 Arbitrary Data Usage 48 -------------------- 49 50 Arbitrary data can be used to make verifiable announcements, or to have other 51 protocols sit on top of Sia. The arbitrary data can also be used for soft 52 forks, and for protocol relevant information. Any arbitrary data is allowed by 53 consensus, but only certain arbitrary data is considered standard. 54 55 Arbitrary data that is prefixed by the string 'NonSia' is always allowed. This 56 indicates that the remaining data has no relevance to Sia protocol rules, and 57 never will. 58 59 Arbitrary data that is prefixed by the string 'HostAnnouncement' is allowed, 60 but only if the data within accurately decodes to the HostAnnouncement struct 61 found in modules/hostdb.go, and contains no extra information.