All notable changes to this project are documented in this file.

[0.8.3-dev] in progress

  • Disallow Void type input parameters for smart contracts and increase test coverage
  • Fix confirmed tx not being purged from mempool #703
  • Fix bootstrap thread joining failure on Ubuntu systems
  • Make bootstrap lookup dynamic such that users don’t have to update their configs from here on forward
  • Fix various issues related to signing multi-signature transactions
  • Move some warnings and ‘expected’ errors to DEBUG level to avoid logging to console by default
  • Empty VerificationScripts for deployed contracts now work as intended
  • Fix RPC’s getaccountstate response schema to match neo-cli #714 <>

[0.8.2] 2018-10-31

  • Fix max recursion depth exceeding when network data inflow exceeds processing speed
  • Add log output control via the new config output_level command. The old config debug command is removed.
  • Update Readme and help
  • Update documentation to include new IsPayable contract flag in the examples
  • Fix discrepancy between getpeers RPC call and the maxpeers setting
  • Update CreateAddress functionality and tests
  • Add VM sanity checks for operations on BigInteger’s
  • Add raw transaction building examples in \examples\ folder
  • Add ExtendedJsonRpcApi, Add getnodestate RPC extended method, Add gettxhistory RPC extended method
  • Fix return types of claimGas function.
  • Update compiler version v0.5.6
  • Add the option -u (unittest-net) to
  • Add fixtures guidelines and add the smart contract source codes ( to the fixtures package
  • Adds sendmany feature to, integrates with send feature, and adds provisions for sending with a negative fee and bad from_address
  • Fix ExtendedJsonRpcApi
  • Fix cleaning up tasks for disconnected peers #687
  • Fix duplicate task starting for requesting blocks
  • Add getblockheader RPC method
  • Remove Neo.Witness.GetInvocationScript
  • Allow wallets to sync past corrupt blocks

[0.8.1] 2018-10-06

  • Add sendmany and sendfrom RPC methods & tests and integrate with sendtoaddress
  • Updated all the dependencies
  • Add Neo.Transaction.GetWitnesses, Neo.Witness.GetInvocationScript, Neo.Witness.GetVerificationScript
  • Change notification transfer event format to use string quoted integer
  • Fix Notification token list to include correct hash for contract and token
  • Removes all hold and withdraw related functionality from wallet and prompt
  • Various updates to inaccuracies in ToJson output of AccountState
  • Add documentation support for Python 3.7
  • Change execution fail event payload to give more meaningful error messages

[0.8.0] 2018-09-28

  • Implemented sendtoaddress RPC method #556
  • Gracefully handle network packet deserialization failures
  • Implementation Stack Isolation (NEP8)
  • Fix issue resetting storage between Smart Contract invocations
  • Default ApplicationConfiguration.AcceptIncomingPeers to False, if config value is not present
  • Update seed list to include NGD nodes
  • Fix unhandled deferred errors
  • Fix Blockchain.DeregisterBlockchain not clearing all static variables
  • Disable test cases due to high time consumption and unreliable results.
  • Migrate the existing test cases, which depend on BlockchainFixtureTestCase and WalletFixtureTestCase, to a privnet. Reduction of the fixtures’ size to about 7MB. #478
  • Ensure non-zero send value in
  • Update block importing and exporting functionality.
  • Add send-zero provision and improved test coverage to sendtoaddress
  • Update Mainnet bootstrap files
  • Update to compiler version v0.5.3

[0.7.8] 2018-09-06

  • Prefix vin JSON output format to match C#
  • Update neo-boa to v0.5.0 for Python 3.7 compatibility
  • Update pexpect to 4.6.0 to be compatible with Python 3.7
  • Accept incoming node connections, configurable via protocol config file setting (default: OFF)
  • Fixes vulnerability to RPC invoke functionality that can send node into unclosed loop during ‘test’ invokes
  • Fix issue with opening recently created wallets
  • Fix block hash caching issue
  • Update add account to help, update help, update standard completions, add config maxpeers functionality, update configure function arguments to behave as intended
  • Add support for multiple requests in one transaction for JSON-RPC
  • Update docs toctree so all pages are indexed & added instructions for contributing to docs

[0.7.7] 2018-08-23

  • Fix issue with UserWallet.SaveStoredData
  • Update neo-core to v0.5.1
  • Add appropriate GAS cost for CHECKMULTISIG for an array
  • Add appropriate GAS cost for VERIFY
  • Update to acheive passing neo-python-core build
  • Add Seedlist.rst and update Basicusage.rst for API Servers
  • Add test for np-prompt using pexpect
  • Add getwalletheight RPC call
  • Add support for Peewee 3.6.4
  • Add support for IsPayable flag in prompt.
  • Fix Block header problems with script
  • Sync GAS price calculations with current Neo core
  • Update bootstrap files for mainnet and testnet
  • Fix ContextItem JSOn decoding
  • Fix sys_fee calculation for certain transaction types
  • Fix TransactionAttribute duplication in Transactions

[0.7.6] 2018-08-02

  • Adds ability to attach a fee to a send transaction
  • Update Node selection mechanism
  • Store Transactions list items inside a Block in a consistent format.
  • Improved peer connection maintenance

[0.7.5] 2018-07-19

  • Add CreateAddress Feature
  • Update NodeLeader peer monitoring system
  • Add ability to configure size of requests for blocks as well as block processing queue size
  • Update mainnet bootstrap files
  • Fix size calculations for all serializable classes
  • Add size key to JSON output of Block and Transaction
  • add prompt command to split VIN to multiple VOUT
  • update notification endpoint to include total_pages in output, and allow pagesize paramater to be passed in
  • update seeds for mainnet

[0.7.3] 2018-07-12

  • Updated package requirements, removed pycrypto from all dependencies to fix install error(s) #485
  • Adds option to enter arguments for smart contract in an ‘interactive’ mode, which allows for much better parsing of input, activated by passing the --i flag when invoking.
  • Adds ability to not parse address strings such as AeV59NyZtgj5AMQ7vY6yhr2MRvcfFeLWSb when inputting to smart contract by passing the --no-parse flag
  • Changes the structure of items dispatched in SmartContractEvents to use the ContractParameter interface for better type inference and variable usage.
  • Fix sending NEP5 tokesn from a multisig address.
  • Bugfix: np-api-server with open wallet now properly processes new blocks
  • Update neo-boa to v0.4.8 and neocore to v0.4.11
  • Add VM support for Neo.Contract.IsPayable

[0.7.2] 2018-06-21

  • When using a custom datadir (with --datadir), np-prompt will store log and history files there instead of the default directory. Note: if you use a custom datadir that does not yet exist, np-prompt starts without history or logs because those files are just created from scratch in the custom datadir.
  • Updated the dependencies
  • Updated MainNet bootstrap files
  • Added --wallet flag to the np-api-server command. The server can now open a wallet. #459
  • Added a partial implementation of the listaddress RPC method. #459
  • Added getnewaddress method to the JSON RPC API #464
  • Added an implementation of the getbalance RPC method. #465
  • updated seed list, change behavior of restarting NodeLeader when connected nodes falls below 2
  • Add Neo.Blockchain.GetTransactionHeight API
  • Updating Enumerator API for parity with Neo PR #244
  • Unifying interop namespace Neo PR #254
  • Update neo-boa version to v0.4.7 for new Enumerator/Iterator interop methods and additional python opcode support.
  • Fixed REST API /status current_height off-by-one #475

[0.7.1] 2018-06-02

  • update FunctionCode Return type parsing
  • add np-export and np-import commands for importing and exporting of raw block data files

[0.7.0] 2018-06-01

  • fix a bug with smart-contract parameter string parsing #412
  • fix StateMachine.Contract_Migrate and add tests
  • add ability to attach tx attrs to build command and testinvoke. altered tx attr parsing
  • updated the install instructions present on docs
  • fix issues with some JSON-RPC properties #418
  • added support for optionally chunking through GAS claims in prompt #419
  • support RPC and REST endpoints in parallel #420
  • Added new command tkn_history to the prompt. It shows the recorded history of transfers of a given NEP5 token, that are related to the open wallet.
  • fix current block lookup during smart contract event processing #426
  • fixed custom datadir setup for prompt and api-server
  • added mint smart-contract event to NotificationDB #433
  • Allow SmartContract to use a hash with or without 0x prefix
  • update to neo-boa v0.4.4
  • Update to neo-python-core v0.4.8:
  • Create wallets with np-utils --create-wallet
  • BigInteger(0) now is b'\x00'
  • CheckWitness now only accepts 20 or 33 byte addresses,CheckWitness faults VM when input is bad rather than returning False
  • When creating contracts, ReturnType is now written by ScriptBuilder as a BigInteger
  • Allow sending of transaction attributes with invocations
  • Added signing utility np-sign for using a wallet, WIF, or NEP2 to sign an arbitrary message.

[0.6.9] 2018-04-30

  • alter logging
  • fix issue with dispatching transfer events when from_addr is False
  • add TPS monitor to prompt state command
  • add check for db schema changes
  • add support for StorageIterator and Storage.Find from smart contracts
  • update to neocore==0.4.6
  • update VERIFY implementation to match C#
  • add check for block tx length when adding to blockchain to address issues #302 and #360
  • add smart contract storage searching using a prefix.
  • source code cleanup of imports and class declarations
  • update to neo-boa==0.4.2

[0.6.8] 2018-04-26

  • add ServiceEnabled boolean to settings to determine whether nodes should send other nodes blocks
  • updated new block retrieval mechanism
  • fix for token_delete command not removing tokens from wallet file
  • fixed sc-events and notification DB showing previous block height instead of final block height of event
  • persist refund() notify events in notification DB
  • add Runtime.Serialize/Deserialize support for MAP
  • fix for debug breakpoints not being cleared.
  • add VERIFY op to ExecutionEngine
  • Update to neocore 0.4.2
  • add caching to systemshare and systemcoin creation to help in block persistence.
  • fix asset amount rounding for very small amounts
  • fix storage commit routine for failed contract executions

[0.6.7] 2018-04-06

  • Update all the requirements
  • Networking changes
  • added --maxpeers option for np-prompt and np-api-server. This allows p2p discovery of new nodes up to the value specified
  • added --host option for np-api-server in order to specify a hostname for the server
  • added more testing for neo.Network module
  • various networking improvements
  • fix in neo.SmartContract.StateReader ContractMigrate functionality
  • added check for Python 3.6 on startup
  • API: Added CORS header Access-Control-Allow-Headers: 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With' (fixes Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response)

[0.6.6] 2018-04-02

  • add Neo.Runtime.Serialize and Neo.Runtime.Deserialize for compliance with this (#163)
  • Fixed IsWalletTransaction to make it compare scripts in transactions to scripts (instead of scripthashes) in wallet contracts and scripthashes of transactions (instead of scripts) to scripthashes of watch-only addresses
  • Python version check in fail if not Python 3.6+ (can be disabled with env var SKIP_PY_CHECK)

[0.6.5] 2018-03-31

  • Changed the eval() call when parsing the –tx-attr param to parse only json. Reduced the surface and options available on the other 2 eval calls to improve security.
  • fix wallet rebuild database lock errors (PR #365)
  • Fixed synced_watch_only_balances being always zero issue (#209)
  • Added ‘getpeers’ to the JSON RPC API (only containing the available functionality)
  • Updated to neo-boa==0.4.0, which has support for using dictionaries and interactive debugging
  • Added interactive VM Debugger #367
  • Added Pause and Resume methods to neo.Core.Blockchain in order to allow for processing to occur without new incoming blocks
  • Fix bug with checking if contract is an NEP5 Token
  • Update testnet bootstrap files
  • lowered amount of blocks requested by each thread to prevent hanging connections

[0.6.4] 2018-03-24

  • Add GZIP compression to RPC server responses if the caller supports it.
  • Change VM fault reporting to only happen when debug logging is enabled
  • fix engine error states
  • update mainnet bootstrap files
  • performance fix for VM engine execution logging (PR #354)

[0.6.3] 2018-03-21

  • update to neocore==0.3.10 to fix ToNeoJsonString() issue identified here
  • make home dir optional for .neopython
  • performance fix for block update speed

[0.6.2] 2018-03-21

  • Implementing interop type MAP along with new opcodes NEWMAP HASKEY KEYS VALUES and modify ARRAYSIZE PICKITEM SETITEM REMOVE to support MAP as per PR here <>__
  • Added support for using --from-addr= to specify the address to use for testinvoke in (PR #329)
  • Fixed neo/bin/ to redact WIF keys, nep2 keys and contract metadata from the command history file
  • Added TransactionInvocation.GetScript to
  • Fixed missing uri locations in neo/api/REST/ (PR #342)
  • Fixed privatenet check by fixing the chain path for checks in Settings (PR #341)
  • Fixed neo-privnet.sample.wallet
  • Fix for current block height lag behind other RPC implementations by 1-3 blocks
  • Fixed to use the specified data directory, instead of hard-coded relative paths.
  • Test chains moved to the user data directory, instead of the projects code path.

[0.6.1] 2018-03-16

  • Fixed README reference in
  • Added additional error messages to to help with debugging smart contracts.
  • Changes for Pypi compatibility:
    • move protocol.*.json to neo/data/
    • move and other scripts to neo/bin
    • default chain data path is now in ~/.neopython/Chains. prompt.log and prompt.history files are also stored there
    • the following console scripts are now on the venv path after running pip install neo-python or pip install -e . for github based installs:
      • np-prompt
      • np-api-server
      • np-bootstrap
      • np-reencrypt-wallet
    • updated docs for Pypi changes

[0.5.7] 2018-03-14

  • update to neocore==0.3.8
  • Fixed README reference in, add pypi badge to readme
  • Add ability to specify --datadir path for where leveldb directories are stored
  • Tries to auto-create Chains directory in --datadir if it doesnt exist
  • Add scripts to be exported for package install. np_prompt, np_api_server, np_bootstrap, and np_reencrypt_wallet available as commands after pip install
  • add protocol.*.json into data package
  • move neo-privnet.wallet to neo-privnet.sample.wallet and .gitignore neo-privnet.wallet
  • Change to README.rst`

[0.5.4] 2018-03-14

  • All requests to the API that are invalid will now receive a None for results rather than an empty list []
  • update to neo-boa==0.3.7
  • Improved logging setup. See the options with ./ -h
  • Added sc-debug-notify option to the config console command. This preserves smart contract Notify() events when SC execution fails and is intended for SC debugging purposes only.
  • Added VM instruction counter to error messages to indicate the final instruction that failed. Allows for setting conditional breakpoints to support SC debugging.
  • Renamed neo.api.REST.NotificationRestApi to neo.api.REST.RestApi
  • Added -v/--verbose argument to, which makes show smart contract events by default
  • Added vm-log option to the config console command. This enabled logging of VM instructions to vm_instructions.log for debugging purposes.
  • Fix multi-signature contract import to allow using a single signature
  • Fix fund sending from multi-signature contract
  • Added instructions on retrieving NEO TestNet funds
  • Fixed issue with missing notifications/ prefix for addr call in neo/api/REST/
  • Added neo-privnet.wallet to the project root. This is the standard wallet for private networks.
  • When using a privnet with -p, check if chain database is correct. Renamed Chains/Priv_Notif to Chains/privnet_notif (if you need your old privnet notification db, you need to rename it manually).
  • Optionally allow to use custom privnet hosts with -p (PR #312)
  • Added a dependency check to, which verifies that the installed dependencies match those in requirements.txt

[0.5.3] 2018-03-04

  • add documentation for data types in neo-python
  • add intructions on build, build .. test, import contract, and testinvoke to docs
  • BuildNRun results now converted to ContractParameter before printed
  • contract {hash} no longer throws errors when it is not an NEP5 contract
  • Added method AsParameterType to ContractParameter for casting results

[0.5.1] 2018-03-02

  • Documentation and Dockerfile updates for Python 3.6
  • Notification API: include peer count in status
  • Fix token error handling (cedde9ec)
  • Added warning about wallet syncing prior to logging insufficient funds error, added IsSynced method Wallet class to check this (PR #2259)

[0.5.0] 2018-03-01

  • Move to Python 3.6 (PR #270)
    • move to only python 3.6+ support
    • use new version of compiler ( neo-boa==0.3.3 ) based on python 3.6 wordcode
    • full testing of VM and all compiled smart contracts
    • adds new command TestBuild for running tests of compiled contracts
  • Add Notification REST URL prefix (PR #274)
  • Add (PR #271)
  • Fixed script value returned by JSON-RPC invokes (PR #268)
  • Added support for additional JSON-RPC “type” parameters (PR #267)
  • Updating of almost all dependencies (PR #261)
  • Fixed bug with transactions consuming between 9 and 10 GAS (PR #260)
  • Added automatic deploy to pypi (PR #275)
  • Updated Notification REST API URLs with /v1 prefix, and some with /v1/notifications (PR #274)
  • Fixed inconsistencies with JSON-RPC output values (PR #272)

[0.4.9] 2018-02-21

  • wallet sync error and password fixes related to encryption changes (PR #245)
  • import contract_addr and build … test fixes (PR #237)
  • Easy Coznet support(PR #239)
  • ContractParameterContext fix (PR #242)
  • Zero length bytearray in VM fix (PR #244)
  • Wallet Encryption changes (PR #232)
  • Close wallet on quit (PR #226)
  • Bugfix for smart contract storage events (PR #228)

[0.4.8] 2018-02-15

  • Fix Gas Cost Calculation (PR #220)
  • Clarify message for token mint command (PR #212)
  • Troubleshooting osx script (PR #208)
  • Make Contract Search case insensitive (PR #207)
  • implement a more robust CLI command parser
  • added peristence to NotificationDB for NEP5 Tokens
  • upstream neocore update

[0.4.6] 2018-01-24

  • Added support for StateTransaction and StateDescriptors (PR #193)
  • Allow multiple open wallets (PR #185)
  • Added ability to include transaction attributes with the send command. example: send neo APRgMZHZubii29UXF9uFa6sohrsYupNAvx 10 --tx-attr={'usage':241,'data':'My Remark'} (PR #184)
  • Notification REST API (PR #177, examples/
  • Minor cleanups and documentation updates

[0.4.5] 2018-01-18

  • updated neo-boa to 0.2.2, added support for array REMOVE VM opcodes
  • moved core functions to neocore
  • better LevelDB support for OSX
  • dependency udates
  • Makefile with some useful commands
  • ability to claim GAS from SC address
  • lots of documentation
  • various small bugfixes

[0.4.3] 2017-12-21

  • updated neo-boa to 0.2.1
  • added support for array REVERSE and APPEND VM opcodes

[0.4.2] 2017-12-18

[0.4.1] 2017-12-15

  • added support for runtime notifications from verification contracts
  • added support for checking verification during mintTokens invoke
  • updated prompt help
  • added additional SC Api ( Neo.Runtime.GetTime, Neo.Transaction.GetUnspentCoins, Neo.Header.GetIndex)
  • added support for dynamically defined smart contract execution
  • added ability to alias an address in the wallet
  • added support for pip versions >= 10.0