Trinity

Unreleased (latest source)

  • #400: Bugfix: Respect configuration of individual logger (e.g -l p2p.discovery=ERROR)
  • #386: Slightly reduce eventbus traffic that the peer pool causes
  • #336: Bugfix: Ensure Trinity shuts down if the process pool dies (fatal error)

0.1.0-alpha.23

Released 2019-02-28

  • #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

0.1.0-alpha.22

Released Jan 15, 2019

  • #176: Delay Constantinople upgrade

0.1.0-alpha.20

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 debug2
  • #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 -e
  • #1538: Maintenance: Variety of dependency resolution warning cleanups
  • #1549: Maintenance: Separate Plugin space for trinity and trinity-beacon
  • #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-beacon command 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 attach instead 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 trinity attach
  • #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:
    • #1508: Rework Eth2.0 Types
    • #1543: Beacon Chain network commands and protocol scaffolding
    • #1521: Rework helper functions - part 1
    • #1552: Beacon Chain protocol class and handshake
    • #1555: Rename data structures and constants
    • #1563: Rework helper functions - part 2
    • #1574: Beacon block request handler

0.1.0-alpha.18,19

That sound you make when you burp in the middle of a hiccup. Hiccurp?

0.1.0-alpha.17

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 mypy to 0.641
  • #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 SIGTERM is sent to the main Trinity process.
  • #1463: Bugfix: Better handling for bad server responses by EthStats client.
  • #1443: Maintenance: Merge the --nodekey and --nodekey-path flags.
  • #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 eth_syncing JSON-RPC endpoint
  • #1410: Maintenance: Implement EIP1283 for updated logic for SSTORE opcode gas costs.
  • #1395: Bugfix: Fix gas cost calculations for CREATE2 opcode
  • #1386: Maintenance: Trinity now prints a message to make it more clear why Trinity was shutdown.
  • #1387: Maintenance: Use colorized output for WARNING and ERROR level logging messages.
  • #1378: Bugfix: Fix address generation for CREATE2 opcode.
  • #1374: Maintenance: New ChainTipMonitor service to keep track of the highest TD chain tip.
  • #1371: Maintenance: Upgrade mypy to 0.630
  • #1367: Maintenance: Improve logging output to include more contextual information
  • #1361: Maintenance: Remove HeaderRequestingPeer in favor of BaseChainPeer
  • #1353: Maintenance: Decouple peer message handling from syncing.
  • #1351: Bugfix: Unhandled DecryptionError
  • #1348: Maintenance: Add default server URIs for mainnet and ropsten.
  • #1347: Maintenance: Improve code organization within trinity module
  • #1343: Bugfix: Rename Chain.network_id to be Chain.chain_id
  • #1342: Maintenance: Internal rename of ChainConfig to TrinityConfig
  • #1336: Maintenance: Implement plugin for EthStats reporting.
  • #1335: Maintenance: Relax some constraints on the ordered task management constructs.
  • #1332: Maintenance: Upgrade pyrlp to 1.0.3
  • #1317: Maintenance: Extract peer selection from the header sync.
  • #1312: Maintenance: Turn on warnings by default if in a prerelease

0.1.0-alpha.16

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_later to 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

0.1.0-alpha.15

  • #1249: Misc bugfixes for fast sync reliability.
  • #1245: Improved exception messaging for BaseService
  • #1244: Use time.perf_counter or time.monotonic over time.time
  • #1242: Bugfix: Unhandled MalformedMessage.
  • #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 KademliaProtocol and DiscoveryProtocol
  • #1225: Expand peer stats tracking
  • #1221: Implement Discovery V5 Protocol
  • #1219: Re-organize and document fixture filler tools
  • #1214: Implement BaseService.is_operational.
  • #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_block to return chain re-organization data.
  • #1197: Increase wait time for database IPC socket.
  • #1194: Unify ValidationError to use eth-utils exception class.
  • #1190: Improved testing for peer authentication
  • #1189: Detect crashed sub-services and exit
  • #1179: LightNode now uses Server for incoming peer connections.
  • #1182: Convert fix-unclean-shutdown CLI command to be a plugin

0.1.0-alpha.14

  • #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 p2p and trinity modules.
  • #1137: Peer subscriber API now supports specifying specific msg types to reduce msg queue traffic.
  • #1142 #1165: Implement JSON-RPC endpoints for: eth_estimateGas, eth_accounts, eth_call
  • #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 Service classes.
  • #1182: Convert fix-unclean-shutdown command to be a plugin.

0.1.0-alpha.13

  • Remove specified eth-account dependency in favor of allowing web3.py specify the correct version.

0.1.0-alpha.12

  • #1058 #1044: Add fix-unclean-shutdown CLI command for cleaning up after a dirty shutdown of the trinity CLI process.
  • #1041: Bugfix for ensuring CPU count for process pool is always greater than 0
  • #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 console and attach commands 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.

Minor Changes

  • #1081: Reduce DEBUG log output during state sync.
  • #1071: Minor fix for how version string is generated for trinity
  • #1070: Easier profiling of ChainSyncer
  • #1068: Optimize evm.db.chain.ChainDB.persist_block for common case.
  • #1057: Additional DEBUG logging of peer uptime and msg stats.
  • #1049: New integration test suite for trinity CLI
  • #1045 #1051: Bugfix for generation of block numbers for GetBlockHeaders requests.
  • #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 console and attach commands, check for presence of IPC socket and log informative message if not found.
  • #934: Decouple the Discovery and PeerPool services.
  • #913: Add validation of retrieved contract code when operating in --light mode.
  • #908: Bugfix for transitioning from syncing chain data to state data during fast sync.
  • #905: Support for multiple UPNP devices.

0.1.0-alpha.11

  • Bugfix for PreferredNodePeerPool to respect max_peers

0.1.0-alpha.10

  • More bugfixes to enforce --max-peers in PeerPool._connect_to_nodes

0.1.0-alpha.9

  • Bugfix to enforce --max-peers for incoming connections.

0.1.0-alpha.7

  • Remove min_peers concept from PeerPool
  • Add --max-peers and enforcement of maximum peer connections maintained by the PeerPool.

0.1.0-alpha.6

  • Respond to GetBlockHeaders message during fast sync to prevent being disconnected as a useless peer.
  • Add --profile CLI flag to Trinity to enable profiling via cProfile
  • Better error messaging with Trinity cannot determine the appropriate location for the data directory.
  • Handle ListDeserializationError during handshake.
  • Add net_version JSON-RPC endpoint.
  • Add web3_clientVersion JSON-RPC endpoint.
  • Handle rlp.DecodingError during handshake.