v3.3.0
Consensus update (hard fork)
- Voting starts immediately, once 90% of mined blocks contain votes for update, the update height will be automatically selected so that consensus update will happen approximately 2 weeks after that.
- Market fees - any transaction fee including
0
is now legal for all transactions. Miners will increase block size only if it is profitable for them in a short run.
General improvements
- Better priority and exclusive nodes logic.
- Seed nodes are now contacted approximately once per day (greatly helps to catch up after
bytecoind
is started for users who run it after delay of several weeks or more). - Binary methods now share single access point
/binary_rpc
. - Code for consensus upgrade voting correctly counts votes on both main chain and each side chain.
- Limited on incoming connections (default is 100).
- Fixed ignored external port on peer handshake (made connects through exposed non-standard ports to nodes behind NAT impossible).
- Groestl hash function is updated from the official source.
- Keccak permutation function is updated from the official source.
bytecoind
never searches forblocks.bin
andblockindex.bin
outside the data folder.- now when you specify
--p2p-bind-address
, but not--p2p-external-port
, p2p external port will be set to p2p bind port. When you wish NAT tunneling, good practice is to specify both.
Command line changes/additions
- Paranoid mode to check every byte of blockchain when downloading (usually checks only blocks beyond the last checkpoint).
- Warning: Now
walletd
exits by default after--create-wallet
and--set-password
operations. This change can break your scripts. If you need the wallet running after those commands, you can add--launch-after-command
parameter - Now you can use
--set-password
with--export-view-only
and--backup-wallet-data
, to encrypt result wallet with a different password. - Fixed bug with
walletd
not returningapi::WALLETD_BIND_PORT_IN_USE
error code when the JSON API port is in use and using inprocbytecoind
. - Fixed bug with
bytecoind
not returningapi::BYTECOIND_BIND_PORT_IN_USE
error code when the JSON API port is in use. walletd
now prints address after creation of wallet.walletd
now prints deprecation warning when using inprocbytecoind
.walletd
now binds to port9070
on testnet and10070
on stagenet resp. by default.
General API improvements
- Optimisation of JSON RPC calls (2x speed up on very large responses).
- Made the
jsonrpc
argument mandatory with value "2.0" in all JSON RPC calls according to the spec. - JSON RPC
id
is required now according to spec. - JSON RPC error's additional data moved into
data
object inside theerror
object according to spec. - Now any field in requests that daemons do not understand will be reported as a error.
- Much better error handling, more specific error codes.
Specific API improvements
- New
get_block_header
method for blockchain structure inspection (to replacegetblockheaderbyhash
,getblockheaderbyheight
, andgetlastblockheader
legacy methods). - New
get_wallet_info
method. - New
VIEW_ONLY_WALLET
(-304
) error code, returned fromcreate_transaction
. - In methods supporting longpoll (
get_statu
s andget_block_template
) all longpoll arguments are now optional. So, for example, if you are interested inoutgoing_peer_count
only, you can specify onlyoutgoing_peer_count
in request and get response whenoutgoing_peer_count
changes. Changes to other fields will not trigger response to longpoll. - New
ADDRESS_FAILED_TO_PARSE
(-4
) andADDRESS_NOT_IN_WALLET
(-1002
) error codes, returned from lots of methods - New fields in get_addresses request/response to iterate through list of addresses
- Now
top_block_timestamp_median
returned correctly from get_status JSON RPC methods. - New
need_signatures
fields in APIs returning raw transactions. check_sendproof
now returns values from sendproof in response if proof is valid.- All methods return new correct values for
block_size
andtransactions_cumulative_size
. get_raw_block
andget_block_header
now returnorphan_status
anddepth
(consistent withheight_or_depth
fields where top block is-1
).get_random_amounts
has no more depth limit of 128 block (distribution would be skewed a bit for very large depths).get_statistics
response now includes much more information.submit_block
now returnsblock_header
in result.- All
transfer
objects now havetransaction_hash
field - especially useful when processingunlocked_transfers
in result ofget_transfers
method.
API deprecations (will be removed in version 3.4.0)
- In all
output
andtransaction
objectsunlock_time
is deprecated (renamed tounlock_block_or_timestamp
). - In all
output
objectsglobal_index
deprecated (renamed toindex
). - In
get_random_outputs
requestouts_count
is deprecated (renamed tooutput_count
). - In
get_transfers
requestdesired_transactions_count
is deprecated (renamed todesired_transaction_count
). - In all
transaction
objects 'binary_size' is deprecated (renamed tosize
).
Incompatible API changes
get_raw_transaction
method now returns json error-5
if transaction not found.- Deprecated
prev_hash
field remains only in result of legacy methods (getblockheaderbyhash
,getblockheaderbyheight
, andgetlastblockheader
legacy methods), use 'previous_block_hash' instead. - Deprecated
total_fee_amount
field remains only in result of legacy methods (getblockheaderbyhash
,getblockheaderbyheight
, andgetlastblockheader
), usetransactions_fee
instead. - Deprecated
transactions_cumulative_size
field remains only in result of legacy methods (getblockheaderbyhash
,getblockheaderbyheight
, andgetlastblockheader
), usetransactions_size
instead.
Incompatible API changes (likely to affect only developers of block explorers)
- In all raw block objects
global_indices
renamed tooutput_indexes
. - In all raw transaction objects
vin
,vout
renamed toinputs
,outputs
resp. - In all raw output objects
key
renamed topublic_key
. - In all raw output objects
target
object removed and all its fields moved into raw output object. - In all raw coinbase input objects
block_index
renamed toheight
. - In all raw header objects (including
parent_block
)miner_tx
,base_transaction_branch
renamed tocoinbase_transaction
,coinbase_transaction_branch
resp. - In all raw input and raw output objects,
tag
:ff
renamed totype
:coinbase
andtag
:02
renamed totype
:key
.
Testnet/Stagenet related
- New command line parameter
--net=test|stage|main
configures daemons for testnet, stagenet, or mainnet resp. - For testnet time multiplier can now be set to speed up all processes 10x, 100x or even more.
- When participating in testnet or stagenet,
bytecoind
now uses UDP Multicast to announce/discover other bytecoind nodes in local network. Thus in most local networks testnet will self-assemble without seed nodes. In mainnet multicasts are disabled due to anonymity concerns. - Testnet/Stagenet now have fixed 1MB max block size limit.