City of Zion has recently released v0.8.2 of neo-python, a Python-based node and SDK for the NEO blockchain. The project aims to become a full port of the NEO project. The original changelog can be viewed here, and the latest version can be downloaded here.
New Features
- Add getblockheader RPC method
The neo-python project does not currently have support for all RPC methods that are implemented in neo-cli. CoZ developer @jseagrave21 provided the getblockheader method, which follows the same example set by neo-cli, but also accepts block height as a parameter in addition to block hash.
- Add VM sanity checks for operations on BigInteger’s
Independent developer @udoprog noted a potential exploit that could cause the VM to perform computationally expensive operations with a relatively low GAS cost. CoZ developer @ixje resolved the issue.
- Add ExtendedJsonRpcApi, Add getnodestate RPC extended method, Add gettxhistory RPC extended method
The neo-python team created an optional API extension that allows for the implementation of non-standard RPC methods (methods that are not implemented in neo-cli). In the future, extended RPC functionality will be moved to a Plugin-based system.
- Allow wallets to sync past corrupt blocks
Due to past fork incidents on the NEO blockchain, wallets could become stuck on a corrupt block. CoZ developer @localhuman provided a solution that allows wallets to skip corrupt blocks.
Bug Fixes
- Fix max recursion depth exceeding when network data inflow exceeds processing speed
If incoming data exceeded the rate at which neo-python could process it, eventually the max recursion depth will be reached, causing a segmentation fault. @ixje resolved the issue by using a while loop to check if there is more data for parsing, as an alternative to recursion.
- Fix discrepancy between getpeers RPC call and the maxpeers setting
- Fix return types of claimGas function.
- Fix ExtendedJsonRpcApi
- Fix cleaning up tasks for disconnected peers
CoZ developer @ThomasLobker noticed that when a connected peer disconnected, tasks would keep running and consuming memory. He resolved the issue by adding a .stop() method to the tasks when cleaning up the disconnected peers.
- Fix duplicate task starting for requesting blocks
General Changes
- Add log output control via the new config output_level command. The old config debugcommand is removed.
- Update Readme and Prompt.py help
- Update documentation to include new IsPayable contract flag in the examples
- Update CreateAddress functionality and tests
Community member @wanglongfei88 reported that an error message was displaying when creating an address, although it would be created successfully. @jseagrave21 addressed the issue, and took the opportunity to improve the functionality and make some improvements to CreateWallet tests.
- Add raw transaction building examples in \examples\ folder
- 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 sendmany feature to prompt.py, integrates with send feature, and adds provisions for sending with a negative fee and bad from_address
- Remove Neo.Witness.GetInvocationScript
The latest neo-python release can be acquired here. Full documentation on the installation, configuration and use of neo-python can be found here.
Readers that wish to contribute to the project are recommended to join the #python channel on the NEO discord, or to visit the current list of open issues on Github.
More information on City of Zion can be found at the links below.
About The Author: Brett Rhodes
Brett is a blockchain enthusiast and freelance writer who originally began producing content for the gaming & eSports industries. Now he spends most of his time contributing in the Neo ecosystem.
More posts by Brett Rhodes