Trinity is moving fast. Read up on all the latest improvements.
Trinity 0.1.0-alpha.27 (2019-07-17)¶
- Don’t require blspy by default, which was breaking doc builds and making standard installs more difficult (by requiring cmake) (#805)
Trinity 0.1.0-alpha.26 (2019-07-16)¶
- Expose certain peer pool events and move RequestServer into an isolated plugin (#617)
- Run UPnP Service as an isolated plugin (plus #730 fixup) (#636)
- Log the gap time between the imported header and now; don’t blast screen with logs when regular syncing a lot (#646)
- Make logging config more ergonomic, flexible and consistent (#682)
Transportfor use in testing. (#693)
- Expose events for Transaction and NewBlockHashes commands on the EventBus (#696)
trinity db-shellto connect to a running process and inspect its database (#728)
- Pool management upgrades
- Move TransactionPool into its own process
- Create ProxyPeerPool that partially exposes peer pool functionality to any process (#734)
- Move responsibility for receiving handshake into
- Trinity can now autocomplete CLI parameters on
<tab>. Learn how to activate autocomplete in the docs. (#768)
trioas a loose replacement for the existing
- trinity attach can now accept path to ipc as parameter Learn more docs. (#796)
- Header syncing is now limited in how far ahead of block sync it will go (#704)
KeyErrorexception raised at
del self._dependencies[prune_task_id]during syncing (#731)
- Fix a race condition in Trinity’s event bus announcement ceremony (#763)
- Several very uncommon issues during syncing, more likely during beam sync (#772)
- Squashed bug that redownloads block bodies and logs this warning:
ValidationError: Cannot finish prereq BlockImportPrereqs.StoreBlockBodies of task(#780)
- When starting beam sync, download previous six block bodies, so that uncle validation can succeed. Import needs to verify that new block imports don’t add uncles that were already added. (#803)
- Setup towncrier to generate release notes from fragment files to ensure a higher standard for release notes. (#754)
trinity.protocolevents in API docs (#766)
BeaconAppConfigin API docs. (#775)
- Improve layout of API docs by grouping classmethods, methods and attributes. (#778)
- In the API docs display class methods, static methods and methods as one group “methods”. While we ideally wish to separate these, Sphinx keeps them all as one group which we’ll be following until we find a better option. (#794)
Deprecations and Removals¶
- Plugin removals
BaseAsyncStopPluginwhich isn’t needed anymore now that there is no hardwired
- Remove plugin manager scopes which aren’t needed anymore now that there is only
get_chain_configAPI was moved from the
- Upgraded py-evm to deal with eth-keys v0.3.0 dependency issue – see commit
- #637: EVM upgrade: py-evm upgraded to v0.2.0-alpha.43, changes copied here, from the py-evm changelog
- #1778: Feature: Raise custom decorated exceptions when a trie node is missing from the database (plus some bonus logging and performance improvements)
- #1732: Bugfix: squashed an occasional “mix hash mismatch” while syncing
- #1716: Performance: only calculate & persist state root at end of block (post-Byzantium)
- Performance: only calculate & persist storage roots at end of block (post-Byzantium)
- Performance: batch all account trie writes to the database once per block
- Maintenance: Lazily generate VM.block on first access. Enables loading the VM when you don’t have its block body.
- Performance: Fewer DB reads when block is never accessed.
- Performance: speedups on
- #1764: Speed up
is_valid_opcodecheck, formerly 7% of total import time! (now less than 1%)
- #1765: Reduce logging overhead, ~15% speedup
- #1766: Cache transaction sender, ~3% speedup
- #1770: Faster bytecode iteration, ~2.5% speedup
- #1771: Faster opcode lookup in apply_computation, ~1.5% speedup
- #1772: Faster Journal access of latest data, ~6% speedup
- #1773: Faster stack operations, ~9% speedup
- #1776: Faster Journal record & commit checkpoints, ~7% speedup
- #1777: Faster bytecode navigation, ~7% speedup
- #1764: Speed up
- #1751: Maintenance: Add placeholder for Istanbul fork
- #629: Feature: Peers which disconnect from us too quickly are blacklisted for a short period of time.
- #625: Feature: Peer backend system is now sent full list of connected remotes
- #624: Feature: Better logging and tracking of the reason a peer disconnection occured.
- #612: Feature: Make Python 3.7 the environment of the ethereum/trinity docker images
- #596: Feature:
p2p.PeerPoolnow sources peer candidates using an extendable backend system.
- #519: Feature: Retain disconnect reason on
BasePeerwhen we disconnect.
- #555: Feature: Peers who timeout too often in the Request/Response API will be disconnected from and blacklisted for 5 minutes.
- #558: Feature: Peers who are disconnected due to a
bad_protocolare blacklisted for 10 minutes.
- #559: Feature: Peers who send invalid responses are disconnected from using
- #569: Feature: Log messages with sequences of block numbers now use a concise representation to reduce message size.
- #571: Feature:
BaseService.uptimeproperty now exposes integer number of seconds since service was started.
- #441: Feature: Run with any custom network ID, as long as you specify a genesis file
- #436: Feature: Connect to preferred nodes even when discovery is disabled
- #518: Feature: Create log directory for you, if data dir is empty
- #630: Bugfix: Proper shutdown of the whole trinity process if the network database is corrupt.
- #618: Bugfix: Can actually connect to other trinity peers now (and syncing peers).
- #595: Bugfix: Error handling for corrupt snappy data
- #591: Bugfix: Catch
RuntimeErrorin handshake to prevent crashing the entire node
- #469: Bugfix: Fix deprecation warnings from
- #527: Bugfix:
LESPeerclass now raises proper exceptions for mismatched genesis hash or network id.
- #531: Bugfix:
p2p.kademlia.Nodeclass is now pickleable.
- #564: Bugfix: Sub-protocol compatibility matching extracted from
p2p.BasePeerto make it easier to test.
- #565: Bugfix:
p2p.Commandclasses no longer use mutable data structures for class-level properties.
- #568: Bugfix: Revert to fixed timeout for Request/Response cycle with peer to mitigate incorrect timeouts when networking conditions change.
- #570: Bugfix: Remove local implementations of humanize utils in favor of
- #485: Bugfix: Ensure Trinity shuts down if Discovery crashes unexpectedly
- #400: Bugfix: Respect configuration of individual logger (e.g -l p2p.discovery=ERROR)
- #336: Bugfix: Ensure Trinity shuts down if the process pool dies (fatal error)
- #347: Bugfix: Don’t crash during sync pruning when switching peers
- #446: Bugfix(es): Several reliability improvements to regular sync
- #389: Bugfix: Always return contiguous headers from header syncer
- #493: Performance: Establish peer connections concurrently rather than sequentially.
- #528: Performance: Limit number of concurrent attempts to establish new peer connections.
- #536: Performance: Peer connection tracking is now a plugin in the
- #389: Performance: When switching sync to a new lead peer, don’t backtrack to importing old headers
- #556: Performance: Upgrade to lahja 0.13.0 which performs less inter-process communication
- #386: Performance: Slightly reduce eventbus traffic that the peer pool causes
- #483: Performance: Speed up normalization of peer messages
- #608: Maintenance: Enable tests for Constantinople and Petersburg
- #623: Maintenance: Optimise for faster test runs
- #337: Feature: Support for ConstantinopleV2 aka Petersburg aka ConstantinopleFix
- #270: Performance: Persist information on peers between runs
- #268: Maintenance: Add more bootnodes, use all the Geth and Parity bootnodes
- #263: Performance: Upgrade to lahja 0.11.0 and get rid of EventBus coordinator process
- #227: Bugfix: Do not accidentially create many processes that sit idle
- #227: Tests: Cover APIs that also hit the database in trinity attach tests
- #155: Feature: Disable syncing entirely with –sync-mode none
- #155: Feature: Allow running –sync-mode full directly
- #155: Feature: Allow plugins to extend –sync-mode with different strategies
- #236: Performance: Quicker pruning of in-memory headers, was a leading asyncio bottleneck
- #236: Bugfix: Several reliability improvements during sync
Released December 13, 2018
- #1579: Feature: Full Constantinople support, with all* tests passing
- #1590: Performance: CodeStream speedup
- #1576: Bugfix: require recent enough py-ecc to avoid busted py-ecc release (see #1572)
- #1577: Maintenance: Show state diffs on all state failures (see #1573)
- #1570: Maintenance: Cleanup sporadic unclean shutdown of peer request
- #1580: Maintenance: The logged delta in expected vs actual account balance was backwards
- #1573: Maintenance: Display state diffs on failing tests, for much easier EVM debugging
- #1567: Performance: Reduce event bus traffic by enabling point-to-point communication
- #1569: Bugfix: Increase Kademlia timeouts to work on high-latency networks
- #1530: Maintenance: Rename logging level from
trace(reserved for EVM tracing) to
- #1553: Maintenance: Dynamically tune peer timeouts with historical latency (also #1583)
- #1560: Bugfix: Constantinople CREATE2 gas usage
- #1559: Feature: Mainnet configuration now defaults to Constantinople rules at 7080000
- #1557: Docs: Clarify that local plugins must be installed with
- #1538: Maintenance: Variety of dependency resolution warning cleanups
- #1549: Maintenance: Separate Plugin space for
- #1554: Maintenance: Enable asynchronous iterators that can be cancelled by a service
- #1523: Maintenance: Much faster testing of valid PoW chains
- #1536: Maintenance: Add
trinity-beaconcommand as a placeholder for future Beacon Chain
- #1500: Performance: Be smarter about validating the bloom filter, to avoid duplicate hashing
- #1537: Maintenance: Use new event bus feature to avoid the old hack for clean shutdown
- #1544: Docs: Quickstart fix – use
trinity attachinstead of console
- #1541: Docs: Simplify and de-duplicate readme
- #1533: Bugfix: Light chain data lookups regressed during genesis file feature. Fixed
- #1524: Bugfix: Validate header chain continuity during light sync
- #1528: Maintenance: Computation code reorg and gas logging bugfix
- #1522: Bugfix: Increase the system recursion limit for EVM requirements, but never decrease it
- #1519: Docs: Document why we must spawn instead of fork on linux (spoiler: asyncio)
- #1516: Maintenance: Add test for
- #1299: Feature: Launch via custom genesis file (See EIP proposal)
- #1496: Bugfix: Regular chain sync crash
- The research team has started adding Beacon Chain code to the underlying py-evm repo. It’s all a work in progress, but for those who like to follow along:
That sound you make when you burp in the middle of a hiccup. Hiccurp?
Released November 20, 2018
- #1488: Bugfix: Bugfix for state sync to limit the number of open files.
- #1478: Maintenance: Improve logging messages during fast sync to include performance metrics
- #1476: Bugfix: Ensure that network connections are properly close when a peer doesn’t successfully complete the handshake.
- #1474: Bugfix: EthStats fix for displaying correct uptime metrics
- #1471: Maintenance: Upgrade
- #1469: Maintenance: Add logging to show when fast sync has completed.
- #1467: Bugfix: Don’t add peers which disconnect during the boot process to the peer pool.
- #1465: Bugfix: Proper handling for when
SIGTERMis sent to the main Trinity process.
- #1463: Bugfix: Better handling for bad server responses by EthStats client.
- #1443: Maintenance: Merge the
- #1438: Bugfix: Remove warnings when printing the ASCII Trinity header
- #1437: Maintenance: Update to use f-strings for string formatting
- #1435: Maintenance: Enable Constantinople fork on Ropsten chain
- #1434: Bugfix: Fix incorrect mainnet genesis parameters.
- #1421: Maintenance: Implement
- #1410: Maintenance: Implement EIP1283 for updated logic for
SSTOREopcode gas costs.
- #1395: Bugfix: Fix gas cost calculations for
- #1386: Maintenance: Trinity now prints a message to make it more clear why Trinity was shutdown.
- #1387: Maintenance: Use colorized output for
ERRORlevel logging messages.
- #1378: Bugfix: Fix address generation for
- #1374: Maintenance: New
ChainTipMonitorservice to keep track of the highest TD chain tip.
- #1371: Maintenance: Upgrade
- #1367: Maintenance: Improve logging output to include more contextual information
- #1361: Maintenance: Remove
HeaderRequestingPeerin favor of
- #1353: Maintenance: Decouple peer message handling from syncing.
- #1351: Bugfix: Unhandled
- #1348: Maintenance: Add default server URIs for mainnet and ropsten.
- #1347: Maintenance: Improve code organization within
- #1343: Bugfix: Rename
- #1342: Maintenance: Internal rename of
- #1336: Maintenance: Implement plugin for EthStats reporting.
- #1335: Maintenance: Relax some constraints on the ordered task management constructs.
- #1332: Maintenance: Upgrade
- #1317: Maintenance: Extract peer selection from the header sync.
- #1312: Maintenance: Turn on warnings by default if in a prerelease
Released September 27, 2018
- #1332: Bugfix: Comparing rlp objects across processes used to fail sporadically, because of a changing object hash (fixed by upgrading pyrlp to 1.0.3)
- #1326: Maintenance: Squash a stack trace in the logs when a peer sends us an invalid public key during handshake
- #1325: Bugfix: When switching to a new peer to sync headers, it might have started from too far behind the tip, and get stuck
- #1327: Maintenance: Squash some log warnings from trying to make a request to a peer (or receive a response) while it is shutting down
- #1321: Bugfix: Address a couple race condition exceptions when syncing headers from a new peer, and other downstream processing is in progress
- #1316: Maintenance: Reduce size of images in documentation
- #1313: Maintenance: Remove miscellaneous things that are generating python warnings (eg~ using deprecated methods)
- #1279: Reliability: Atomically persist when storing: a block, a chain of headers, or a cluster of trie nodes
- #1304: Maintenance: Refactor AtomicDB to return an explict database instance to write into
- #1296: Maintenance: Require new AtomicDB in chain and header DB layers
- #1295: Maintenance: New AtomicDB interface to enable a batch of atomic writes (all succeed or all fail)
- #1290: Bugfix: more graceful recovery when re-launching sync on a fork
- #1277: Maintenance: add a cancellable
call_laterto all services
- #1226: Performance: enable multiple peer requests to a single fast peer when other peers are slow
- #1254: Bugfix: peer selection when two peers have exactly the same throughput
- #1253: Maintenance: prefer f-string formatting in p2p, trinity code
- #1249: Misc bugfixes for fast sync reliability.
- #1245: Improved exception messaging for
- #1244: Use
- #1242: Bugfix: Unhandled
- #1235: Typo cleanup.
- #1236: Documentation cleanup
- #1237: Code cleanup
- #1232: Bugfix: Correctly enforce timeouts on peer requests and add lock mechanism to support concurrency.
- #1229: CI cleanup
- #1228: Merge
- #1225: Expand peer stats tracking
- #1221: Implement Discovery V5 Protocol
- #1219: Re-organize and document fixture filler tools
- #1214: Implement
- #1210: Convert sync to use streaming queue instead of batches.
- #1209: Chain Builder tool
- #1205: Bugfix: ExchangeHandler stats crash
- #1204: Consensus bugfix for uncle validation
- #1151: Change to
import_blockto return chain re-organization data.
- #1197: Increase wait time for database IPC socket.
- #1194: Unify
- #1190: Improved testing for peer authentication
- #1189: Detect crashed sub-services and exit
Serverfor incoming peer connections.
- #1182: Convert
fix-unclean-shutdownCLI command to be a plugin
- #1081 #1115 #1116: Reduce logging output during state sync.
- #1063 #1035 #1089 #1131 #1132 #1138 #1149 #1159: Implement round trip request/response API.
- #1094 #1124: Make the node processing during state sync more async friendly.
- #1097: Keep track of which peers are missing trie nodes during state sync.
- #1109 #1135: Python 3.7 testing and experimental support.
- #1136 #1120: Module re-organization in preparation of extracting
- #1137: Peer subscriber API now supports specifying specific msg types to reduce msg queue traffic.
- #1142 #1165: Implement JSON-RPC endpoints for:
- #1150 #1176: Better handling of malformed messages from peers.
- #1157: Use shared pool of workers across all services.
- #1158: Support specifying granular logging levels via CLI.
- #1161: Use a tmpfile based LevelDB database for cache during state sync to reduce memory footprint.
- #1166: Latency and performance tracking for peer requests.
- #1173: Better APIs for background task running for
- #1182: Convert
fix-unclean-shutdowncommand to be a plugin.
- Remove specified
eth-accountdependency in favor of allowing
web3.pyspecify the correct version.
- #1058 #1044: Add
fix-unclean-shutdownCLI command for cleaning up after a dirty shutdown of the
- #1041: Bugfix for ensuring CPU count for process pool is always greater than
- #1010: Performance tuning during fast sync. Only check POW on a subset of the received headers.
- #996 Experimental new Plugin API: Both the transaction pool and the
attachcommands are now written as plugins.
- #898: New experimental transaction pool. Disabled by default. Enable with
--tx-pool. (warning: has known issues that effect sync performance)
- #935: Protection against eclipse attacks.
- #869: Ensure connected peers are on the same side of the DAO fork.
- #1081: Reduce
DEBUGlog output during state sync.
- #1071: Minor fix for how version string is generated for trinity
- #1070: Easier profiling of
- #1068: Optimize
evm.db.chain.ChainDB.persist_blockfor common case.
- #1057: Additional
DEBUGlogging of peer uptime and msg stats.
- #1049: New integration test suite for trinity CLI
- #1045 #1051: Bugfix for generation of block numbers for
- #1011: Workaround for parity bug parity #8038
- #987: Now serving requests from peers during fast sync.
- #971 #909 #650: Benchmarking test suite.
- #968: When launching
attachcommands, check for presence of IPC socket and log informative message if not found.
- #934: Decouple the
- #913: Add validation of retrieved contract code when operating in
- #908: Bugfix for transitioning from syncing chain data to state data during fast sync.
- #905: Support for multiple UPNP devices.
- Bugfix for
- More bugfixes to enforce
- Bugfix to enforce
--max-peersfor incoming connections.
--max-peersand enforcement of maximum peer connections maintained by the
- Respond to
GetBlockHeadersmessage during fast sync to prevent being disconnected as a useless peer.
--profileCLI flag to Trinity to enable profiling via
- Better error messaging with Trinity cannot determine the appropriate location for the data directory.