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.