All notable changes to this project are documented in this file.
- Fix incorrect error handling when importing a 1 out of 2 multi-signature address #860
- Gracefully handle invalid
GETrequest #863 - Implement tx size network fee calc #869
- Fix
config maxpeersto disconnect peers if limited is lower than before #878 - Implement the ability to attach a priority fee to applicable transactions #880
- Fix an invalid list access error during client connection error edge case #882
- Fix NetworkAddressWithTime address serialization #897
- Add additional debug logging to help investigate transaction verification failures #898
- Update
getassetstateRPC method to support neo and gas aliases; Cleanupshow_contract_state#667 - Add fix to ensure tx is saved to wallet when sent using RPC #680
- Disallow
Voidtype input parameters for smart contracts and increase test coverage #690 - Fix confirmed tx not being purged from mempool #703
- Fix bootstrap thread joining failure on Ubuntu systems #705
- Make bootstrap lookup dynamic such that users don't have to update their configs from here on forward #705
- Move some warnings and 'expected' errors to DEBUG level to avoid logging to console by default #708
- Empty VerificationScripts for deployed contracts now work as intended #709
- Fix various issues related to signing multi-signature transactions #710
- Add GET and OPTIONS request functionality for JSON-RPC servers #712
- Fix RPC's
getaccountstateresponse schema to matchneo-cli#714 - Add bad peers to the
getpeersRPC method #715 - Allow a raw tx to be build without an active blockchain db in the environment #718
- Introduce Django inspired component loading for REST and RPC server #719
- Fix unnecessary default bootstrap warning for mainnet showing. #722
- Various updates to the network code to improve stability as well as inspection #723
- Added peer health checking to validate that we get the data we requested within a given time threshold
- Added peer connection monitoring to keep queueing or reset if we have no more valid addresses to connect to.
- Added extensive logging to improve inspection
- Fix
gzipfailure in current implementation of ExtendedJsonRpcApi #724 - Gracefully handle balance query failures of NEP-5 tokens. #744
- Fix
getcontractstateJSON output to match neo-cli 2.9.2 #746 - Fix
getrawtransactionJSON output to match neo-cli 2.9.2 #751 - Add
--to-addroption when claiming gas #755 - Remove
ExtendedJsonRpcserver from base repo (still available as extension) #756 - Fix calculation of asset change value when using multiple alternating asset inputs #803
- Refactor CLI to be more user friendly and support better future extensibility #805
- Update TestNet seeds #807
- Add Reset logic to NodeLeader such that Blockchain fixture testcases reset properly #809
- Resolve peewee DeprecationWarning #810
- Add VM SafeReadBytes #812
- Add gettransactionheight RPC method #813
- Update
ApplicationEnginemethodsCheckStackSizeandGetPrice#814 - Cleanup
show nodesoutput #815
- Improve Tokens.py and
token_send, increase test coverage - Fix max recursion depth exceeding when network data inflow exceeds processing speed
- Add log output control via the new
config output_levelcommand. The oldconfig debugcommand is removed. - Update Readme and Prompt.py
help - Update documentation to include new
IsPayablecontract flag in the examples - Fix discrepancy between
getpeersRPC call and themaxpeerssetting - Update
CreateAddressfunctionality and tests - Add VM sanity checks for operations on
BigInteger's - Add raw transaction building examples in
\examples\folder - Add ExtendedJsonRpcApi, Add
getnodestateRPC extended method, AddgettxhistoryRPC extended method - Fix return types of
claimGasfunction. - Update compiler version
v0.5.6 - Add the option -u (unittest-net) to prompt.py
- Add fixtures guidelines and add the smart contract source codes (UnitTest-SM.zip) to the fixtures package
- Adds
sendmanyfeature to prompt.py, integrates withsendfeature, 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
getblockheaderRPC method - Remove
Neo.Witness.GetInvocationScript - Allow wallets to sync past corrupt blocks
- Add
sendmanyandsendfromRPC methods & tests and integrate withsendtoaddress - 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
holdandwithdrawrelated functionality from wallet and prompt - Various updates to inaccuracies in
ToJsonoutput ofAccountState - Add documentation support for Python 3.7
- Change execution fail event payload to give more meaningful error messages
- Implemented
sendtoaddressRPC method #556 - Gracefully handle network packet deserialization failures
- Implementation Stack Isolation (NEP8)
- Fix issue resetting storage between Smart Contract invocations
- Default
ApplicationConfiguration.AcceptIncomingPeerstoFalse, if config value is not present - Update seed list to include NGD nodes
- Fix unhandled deferred errors
- Fix
Blockchain.DeregisterBlockchainnot clearing all static variables - Disable
prompt.pytest 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 prompt.py
- 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
- Prefix
vinJSON output format to match C# - Update
neo-boato v0.5.0 for Python 3.7 compatibility - Update
pexpectto 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
import_blocks.pyblock hash caching issue - Update prompt.py: add
accountto help, update help, update standard completions, addconfig maxpeersfunctionality, updateconfigurefunction arguments to behave as intended - Add support for multiple requests in one transaction for JSON-RPC
- Update docs
toctreeso all pages are indexed & added instructions for contributing to docs
- Fix issue with
UserWallet.SaveStoredData - Update neo-core to v0.5.1
- Add appropriate GAS cost for
CHECKMULTISIGfor an array - Add appropriate GAS cost for
VERIFY - Update test_prompt.py 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
IsPayableflag in prompt. - Fix Block header problems with
block_import.pyscript - Sync GAS price calculations with current Neo core
- Update bootstrap files for mainnet and testnet
- Fix
ContextItemJSOn decoding - Fix
sys_feecalculation for certain transaction types - Fix
TransactionAttributeduplication in Transactions
- Adds ability to attach a fee to a
sendtransaction - Update Node selection mechanism
- Store
Transactionslist items inside aBlockin a consistent format. - Improved peer connection maintenance
- 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
sizekey to JSON output of Block and Transaction - add prompt command to split VIN to multiple VOUT
- update notification endpoint to include
total_pagesin output, and allowpagesizeparamater to be passed in - update seeds for mainnet
- Updated package requirements, removed
pycryptofrom 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
--iflag when invoking. - Adds ability to not parse address strings such as AeV59NyZtgj5AMQ7vY6yhr2MRvcfFeLWSb when inputting to smart contract by passing the
--no-parseflag - Changes the structure of items dispatched in SmartContractEvents to use the
ContractParameterinterface 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
- When using a custom datadir (with
--datadir),np-promptwill store log and history files there instead of the default directory. Note: if you use a custom datadir that does not yet exist,np-promptstarts without history or logs because those files are just created from scratch in the custom datadir. - Updated the dependencies
- Updated MainNet bootstrap files
- Added
--walletflag to thenp-api-servercommand. The server can now open a wallet. #459 - Added a partial implementation of the
listaddressRPC method. #459 - Added
getnewaddressmethod to the JSON RPC API #464 - Added an implementation of the
getbalanceRPC 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-boaversion to v0.4.7 for new Enumerator/Iterator interop methods and additional python opcode support. - Fixed REST API
/statuscurrent_heightoff-by-one #475
- update FunctionCode Return type parsing
- add
np-exportandnp-importcommands for importing and exporting of raw block data files
- fix a bug with smart-contract parameter string parsing #412
- fix
StateMachine.Contract_Migrateand 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_historyto 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
mintsmart-contract event to NotificationDB #433 - Allow
SmartContractto 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 isb'\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-signfor using a wallet, WIF, or NEP2 to sign an arbitrary message.
- alter logging
- fix issue with dispatching transfer events when
from_addrisFalse - add TPS monitor to
promptstatecommand - add check for db schema changes
- add support for
StorageIteratorandStorage.Findfrom smart contracts - update to
neocore==0.4.6 - update
VERIFYimplementation 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
- add
ServiceEnabledboolean 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
- Update all the requirements
- Networking changes
- added
--maxpeersoption fornp-promptandnp-api-server. This allows p2p discovery of new nodes up to the value specified - added
--hostoption fornp-api-serverin order to specify a hostname for the server - added more testing for
neo.Networkmodule - various networking improvements
- fix in
neo.SmartContract.StateReaderContractMigratefunctionality - 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'(fixesRequest header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response)
- add
Neo.Runtime.SerializeandNeo.Runtime.Deserializefor 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
Settings.py: fail if not Python 3.6+ (can be disabled with env varSKIP_PY_CHECK)
- 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
PauseandResumemethods toneo.Core.Blockchainin 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
- 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)
- update to
neocore==0.3.10to fixToNeoJsonString()issue identified here - make home dir optional for
.neopython - performance fix for block update speed
- Implementing interop type
MAPalong with new opcodesNEWMAP HASKEY KEYS VALUESand modifyARRAYSIZE PICKITEM SETITEM REMOVEto supportMAPas per PR here <https://github.com/neo-project/neo-vm/pull/28>__ - Added support for using
--from-addr=to specify the address to use fortestinvokeinprompt.py. (PR #329) - Fixed
neo/bin/prompt.pyto redact WIF keys, nep2 keys and contract metadata from the command history file.prompt.py.history. - Added TransactionInvocation.GetScript to
StateReader.py - Fixed missing uri locations in
neo/api/REST/RestApi.py(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
bootstrap.pyto 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.
- Fixed README reference in
MANIFEST.in - Added additional error messages to
ExecutionEngine.pyto help with debugging smart contracts. - Changes for Pypi compatibility:
- move protocol.*.json to
neo/data/ - move
prompt.pyand other scripts toneo/bin - default chain data path is now in
~/.neopython/Chains.prompt.logandprompt.historyfiles are also stored there - the following console scripts are now on the
venvpath after runningpip install neo-pythonorpip install -e .for github based installs: np-promptnp-api-servernp-bootstrapnp-reencrypt-wallet
- the following console scripts are now on the
- updated docs for Pypi changes
- move protocol.*.json to
- update to
neocore==0.3.8 - Fixed README reference in
MANIFEST.in, add pypi badge to readme - Add ability to specify
--datadirpath for where leveldb directories are stored - Tries to auto-create
Chainsdirectory in--datadirif it doesnt exist - Add scripts to be exported for package install.
np_prompt,np_api_server,np_bootstrap, andnp_reencrypt_walletavailable as commands afterpipinstall - add protocol.*.json into data package
- move
neo-privnet.wallettoneo-privnet.sample.walletand .gitignoreneo-privnet.wallet - Change
README.mdto README.rst`
- All requests to the API that are invalid will now receive a
Nonefor results rather than an empty list[] - update to neo-boa==0.3.7
- api-server.py: Improved logging setup. See the options with
./api-server.py -h - Added
sc-debug-notifyoption to theconfigconsole command. This preserves smart contractNotify()events when SC execution fails and is intended for SC debugging purposes only. - Added VM instruction counter to
ExecutionEngine.pyerror messages to indicate the final instruction that failed. Allows for setting conditional breakpoints to support SC debugging. - Renamed
neo.api.REST.NotificationRestApitoneo.api.REST.RestApi - Added
-v/--verboseargument to prompt.py, which makes prompt.py show smart contract events by default - Added
vm-logoption to theconfigconsole command. This enabled logging of VM instructions tovm_instructions.logfor 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 foraddrcall inneo/api/REST/RestApi.py - Added
neo-privnet.walletto the project root. This is the standard wallet for private networks. - prompt.py: When using a privnet with
-p, check if chain database is correct. RenamedChains/Priv_NotiftoChains/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
Settings.py, which verifies that the installed dependencies match those in requirements.txt
- add documentation for data types in
neo-python - add intructions on
build,build .. test,import contract, andtestinvoketo docs BuildNRunresults now converted toContractParameterbefore printedcontract {hash}no longer throws errors when it is not anNEP5contract- Added method
AsParameterTypetoContractParameterfor casting results
- 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)
- 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
api-server.py(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
/v1prefix, and some with/v1/notifications(PR #274) - Fixed inconsistencies with JSON-RPC output values (PR #272)
- 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)
- 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
- 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/notification-rest-api-server.py)
- Minor cleanups and documentation updates
- updated
neo-boato0.2.2, added support for arrayREMOVEVM 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
- updated
neo-boato0.2.1 - added support for array
REVERSEandAPPENDVM opcodes
- updated
neo-boato0.2.0 - added support for debug storage
- added support for runtime notifications from verification contracts
- added support for checking verification during
mintTokensinvoke - 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