Why it returned failed msg when make transaction order?

Is there any restriction on the amount of coins to be sent each transaction? I send all the coins I mined during the last 10 months but when I checked the results, it showed failed with msg of ’ bad-txns-oversize’.

I don’t know the answer but I wanted to bump the thread so that we can perhaps find out.

I tried to reduce the total amount at each transaction and finally got it through. I don’t know any other cyptocurrency has solved this problem.

Not a limit on the amount in coins, but the size of the transaction in bytes: There is a network consensus rule that a transaction cannot exceed 100000 bytes. This number is hardcoded in src/consensus/consensus.h:17:

/** The maximum size of a transaction (network rule) */
static const unsigned int MAX_TX_SIZE = 100000;

The error you referenced is returned from src/main.cpp:880:

    // Size limits
    BOOST_STATIC_ASSERT(MAX_BLOCK_SIZE > MAX_TX_SIZE); // sanity
    if (::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION) > MAX_TX_SIZE)
        return state.DoS(100, error("CheckTransaction(): size limits failed"),
                         REJECT_INVALID, "bad-txns-oversize");

References are from the v1.0.12 release codebase, to prevent line number changes from breaking the links.

Aside: The transaction size limit does not seem to be specified in the protocol (v2017.0-beta-2.7 (2017-07-10)). It does specify that the maximum block size is 2000000 bytes (§6.3, pp. 34–35), but otherwise states: “TODO: Other rules inherited from Bitcoin.” Indeed, Bitcoin has this same transaction size limit (although it can be overridden by miners).

2 Likes