Releases¶
v6.1.0 (2022-05-10)¶
Features¶
SSL Certificate fetching and Porter optimizations - Middleware should try cached SSL certification for a node first, and then if the requests fails, fetch the node’s up-to-date SSL cert - Short-circuit WorkerPool background execution once sufficient successful executions occur - Don’t limit WorkerPool size; this has consequences when smaller samples of ursulas are performed; allow threadpool to be flexible by using default min/max - Return more comprehensive error information for failed WorkerPool execution (#2908)
Bugfixes¶
Fix Porter sampling check that ensures Ursula is reachable to be more comprehensive; previously an unreachable Ursula could still be deemed as reachable. (#2888)
Only print relevant network options when running nucypher ursula init (#2917)
Retrieve contract registries from the
development
branch on GitHub instead ofmain
. (#2924)Properly support event retrieval for the PREApplication contract. Remove invalid support for SubscriptionManager contract - proper support will be added in a future release. (#2934)
Improved Documentation¶
Misc¶
Dependency updates - Tests target the london fork. (#2837)
Creation of ‘oryx’ PRE testnet on Ropsten. (#2893)
Add more color to cli output (#2909)
Add a pre-commit hook and github action for Darker to ensure all future changes conform to black and isort. (#2921)
Bump
nucypher-core
dependency to 0.2 (#2927)Show error message when
--prometheus
flag is used since functionality not currently supported. Prometheus monitoring functionality will be revamped in a subsequent release. (#2929)Removes [docs] pip extra (#2932)
v6.0.0 (2022-04-01)¶
Features¶
Introduction of NuCypher Porter - a web-based service that performs
nucypher
protocol operations on behalf of applications for cross-platform functionality. (#2664)Ursula no longer stores KFrags, instead Alice encrypts them inside the treasure map. Allow the KFrag generator and policy publisher to be different entities. (#2687)
Characters use mnemonic seed words to derive deterministic keystore, taking the place of the “keyring”. (#2701)
Simplifies the retrieval protocol (see #259 for the discussion).
PolicyMessageKit
is renamed toMessageKit
.Bob.retrieve()
is renamed toretrieve_and_decrypt()
, and its signature is simplified: it only requires the treasure map, Alice’s verifying key, and the policy encrypting key. A lower-levelBob.retrieve()
is added that does not decrypt, but only attempts to retrieve the capsule frags. (#2730)Allow importing of secret key material for power derivations. (#2742)
Uniform versioning of bytes serializable protocol entities. (#2767)
Modify Porter REST endpoint from
/exec_work_order
to/retrieve_cfrags
and modify request parameters for retrieval of re-encrypted data. Update Bob/retrieve_and_decrypt
REST endpoint to accept a list of message kits instead of only one - to match updatedBob.retrieve_and_decrypt
Python API. (#2768)Update WorkerPool error messages returned by Porter API. (#2772)
Adds ansible build/deploy for Monitor (status.nucypher.network) (#2801)
Extend brand size in
Versioned
to 4 bytes (#2805)CORS, NGINX support for Porter: - Added opt-in CORS origins support to Porter; no origins allowed by default when running Porter directly. - Provided docker-compose execution for Porter to run behind an NGINX reverse proxy server - all origins allowed by default for CORS, but can be customized. NGINX allows for the potential for more complex infrastructure configurations. (#2807)
(#2809)
Halting NU inflation, now refund in WorkLock is possible without work (claim still needed) (#2822)
Updates to integrate NuCypher into Threshold Network (#2824)
Integrate StakingEscrow with Threshold Network’s TokenStaking (#2825)
Removes snapshots logic from
StakingEscrow
(#2831)Switched to Rust implementation of the protocol types (
nucypher-core
). Correspondingly, API has been simplified, and type requirements have been made more strict. (#2832)Simple PRE application contract (#2838)
Renames operator to staking provider and worker to operator (#2851)
Modifies Ursulas for usage as Operators on the Threshold Network’s PRE Application. (#2857)
Full support of policy payments sumitted to polygon in demos and top-level APIs.
Improved certificate handling for network requests.
Prioritizes in-memory node storage for all node runtimes. (#2873)
Updated nucypher-core to 0.1 (#2883)
Proactively shut down Ursula if it is no longer bonded to any staking provider. (#2886)
Include polygon/matic contract registry for mainnet. (#2894)
Bugfixes¶
(#2727)
Cloudworkers: ignore errors on stopping of ursula containers (#2728)
Fixed a problem with node metadata being stored to a file with an incorrect name (#2748)
Fixed failing transactions when gas price used is not an integer. (#2753)
Stop writing bytes to log file which causes exceptions - instead write the hex representation. (#2762)
StakingEscrow.partition_stakers_by_activity()
no longer includes stakers with expired stakes in themissing_stakers
value returned, thereby no longer overstating the number of inactive stakers. (#2764)force pull latest tagged image on external geth deployment (#2766)
Minor memory improvement when collecting staker/worker metrics for prometheus. (#2785)
Fix bug when generating file for output of events from status & stake cli commands. (#2786)
Only use public data to generate keystore IDs and filenames. (#2800)
Fixed WebController bug caused by Path object for TLS/certificate path provided to Hendrix instead of a string. (#2807)
Avoid crashing the learning loop if there is a problem in the metadata returned by seed nodes. (#2815)
Fixed a missing timestamp error when a node’s status is requested before it participated in metadata exchange. (#2819)
Fixed a memory leak in Ursula: removed some teacher statistics accumulated over time, and limited the amount of old fleet states stored. (#2820)
Fixed some occurrences of the old term for
shares
(n
) (#2829)Fix an incorrect usage of node object in
FleetSensor
. (#2877)Fix runaway WorkTracker task that ensures operator confirmed transaction occurs but continues running and making web3 requests even after operator already confirmed. (#2886)
Improved Documentation¶
Document how worker period commitment works. (#2776)
Update documentation to reflect new TreasureMap con KFrags design. (#2833)
Overhaul NuCypher documentation to accommodate the new PRE Application / Threshold Network paradigm. (#2870)
Add documentation about bonding an operator to a staking provider. (#2874)
Embed Threshold Network videos within docs. (#2882)
Deprecations and Removals¶
Renames enviorment variable NUCYPHER_KEYRING_PASSWORD to NUCYPHER_KEYSTORE_PASSWORD (#2701)
m
andn
parameters can no longer be used in character control and Python API;--m
and--n
are no longer supported by the CLI (-m
and-n
still are; the long versions are now--threshold
and--shares
) (#2774)Removal of treasure map storage functionality and supporting publication APIs from the decentralized network. Encrypted treasure maps must be obtained from side channels instead of Ursulas on the network (unless cached). (#2780)
Remove an unused method of
Amonia
(deprecated since we do not store the treasure map on Ursulas anymore) (#2804)Removes the Arrangement API for Alice/Ursula negotiations. Use a simple livliness check during grant-time. (#2808)
Retires and removes eth/token faucet. (#2848)
Remove NuCypher DAO specific code since we are now the Threshold DAO. (#2864)
Removes ‘cloudworkers’ CLI command in favor of nucypher-ops. (#2895)
Misc¶
Switch to PyUmbral 0.2 and adjust its usage according to the changed API. (#2612)
Add disclaimers to
nucypher stake increase
andnucypher stake merge
CLI operations to provide warning about potential reduced rewards for the first period after stake increase due to a known bug, and the workaround. (#2693)Added a more informative error message for
WorkerPool
exceptions. (#2744)Separated Alice and Publisher roles internally and in relevant public APIs (#2745)
TreasureMap split into TreasureMap and EncryptedTreasureMap; external methods of Bob and Porter now take the latter, with the parameter named ‘encrypted_treasure_map’. SignedTreasureMap is merged with TreasureMap. (#2773)
Changed the names of
m
andn
parameters tothreshold
andshares
throughout the API. (#2774)Extends policy probationary period until October 31st, 2021. No policies may be created on the network beyond this date. (#2779)
Umbral dependency bumped to v0.3.0 (#2798)
Extracting protocol logic into an underlying layer and preparing to move it to Rust. Involves multiple ABI changes (in
Arrangement
,MessageKit
,RevocationOrder
,EncryptedTreasureMap
, node metadata). In particular, old node metadata will be backward incompatible with the current version, since it now shares the versoning logic with other protocol objects. (#2802)Move some cryptographic operations inside the Rust extension. Remove dependency on umbral and coincurve. (#2850)
Extend policy probationary period to 2022-6-16T23:59:59.0Z. (#2873)
v5.3.3 (2021-11-24)¶
Bugfixes¶
Fixed a memory leak in Ursula; removed some teacher statistics accumulated over time. (#2826)
v5.3.2 (2021-10-15)¶
Bugfixes¶
Regenerate Ursula TLS certificates if the become invalid, e.g. become expired. (#2810)
Misc¶
Extend policy probationary period until December 31st, 2021. No policies may be created on the network that extend beyond this date. (#2810)
v5.3.1 (2021-08-12)¶
Bugfixes¶
Hotfix - removed Etherchain as a datafeed for now since its format was modified and caused the gas price calculation to fail. (#2769)
v5.3.0 (2021-06-17)¶
Features¶
PolicyManager: creating multiple policies in one tx (#2619)
Adds a new CLI command to show past and present staking rewards, “stake rewards show”. (#2634)
Adds “https://closest-seed.nucypher.network” and “https://mainnet.nucypher.network” as a fallback teacher nodes for mainnet. (#2657)
Whitespaces in character nicknames are now implicitly replaced with an underscore (“_”). (#2672)
Added timestamp and date columns to csv output of “nucypher status events” command. (#2680)
Ursula will now check for active stakes on startup. (#2688)
Add sub-stake boost information to staking CLI. (#2690)
Bugfixes¶
Fixed issues where failing transactions would result in incorrect token allowance and prevent creation of new stakes. (#2673)
examples/run_demo_ursula_fleet.py - Clean up each DB on shutdown. (#2681)
Fix a performance regression in
FleetSensor
where nodes were matured prematurely (pun not intended) (#2709)
Improved Documentation¶
Deprecations and Removals¶
Misc¶
Registry for NuCypher DAO entities. (#2426)
Added code used to generate the DAO Proposal #1, for reference purposes. (#2616)
Improves password collection hints while running
init
commands. (#2662)Extend policy probationary period until August 31st, 2021. No policies may be created on the network beyond this date. (#2716)
v5.2.0 (2021-04-26)¶
Features¶
CLI option –duration-periods renamed to –payment-periods. (#2650)
Bugfixes¶
Fixed inability to update ursula configuration file due to the keyring not being instantiated - updated logic no longer needs keyring to be instantiated. (#2660)
Misc¶
Extends policy probationary period until May 31st, 2021. No policies may be created on the network beyond this date. (#2656)
v5.1.0 (2021-04-15)¶
Features¶
- Improve UX for character CLI when there are multiple configuration files:
If there are multiple possible character configuration files prompt the user to choose
If there is only one character configuration file, even if not the default filename, use lone configuration without prompting and print to CLI. (#2617)
Bugfixes¶
Ensure that correct configuration filepath is displayed when initializing characters, and add hint about using
--config-file <FILE>
for subsequent CLI commands if non-default filepath used. (#2617)
v5.0.2 (2021-04-14)¶
Bugfixes¶
Fixed incorrect use of genesis value for
seconds_per_period
when estimating block number based on period number - applies to prometheus metrics collection andnucypher status events
. (#2646)
v5.0.1 (2021-04-14)¶
No significant changes.
v5.0.0 (2021-04-14)¶
Features¶
Bugfixes¶
Improved Documentation¶
Document staking smart contract API and the base staking pool implementation (
PoolingStakingContractV2
). (#2597)
Misc¶
v4.8.2 (2021-03-25)¶
Bugfixes¶
Fixes ethereum account selection with ambiguous source in CLI. (#2615)
v4.8.1 (2021-03-24)¶
Bugfixes¶
Add
balance_eth
,balance_nu
,missing_commitments
andlast_committed_period
to the/status
REST endpoint. (#2611)
v4.8.0 (2021-03-23)¶
Features¶
- Expanded features for staker and status CLI:
Support substake inspection via nucypher status stakers –substakes.
Automated transaction series for inactive substake removal.
Display unlocked NU amount from stakers status.
Handle replacement of stuck withdraw transactions with –replace. (#2528)
Support extended period migration by nodes via work tracker. (#2607)
Bugfixes¶
Improved Documentation¶
Document minimum approval and support requirements for NuCypher DAO. (#2599)
Deprecations and Removals¶
Deprecate worker IP address as environment variable (
NUCYPHER_WORKER_IP_ADDRESS
). (#2583)
Misc¶
Adjust
Ursula.status_info()
API to make it easier fornucypher-monitor
to collect data. (#2574)
v4.7.1 (2021-03-02)¶
Bugfixes¶
Fixed missing domain parameter causing Ursulas to fail on startup when prometheus is enabled. (#2589)
v4.7.0 (2021-03-02)¶
Features¶
New preferable base pooling contract (#2544)
The output of nucypher stake events can be written to a csv file for simpler staker accounting. (#2548)
Simplifies CLI usage with optional interactive collection of all CLI parameters used during grant, encrypt, and retrieve. (#2551)
Improved status codes and error messages for various PRE http endpoints (#2562)
nucypher status events can now use event filters and be output to a csv file for simpler accounting. (#2573)
Bugfixes¶
Properly handles public TLS certificate restoration; Simplify Ursula construction. (#2536)
Update the call to
estimateGas()
according to the newweb3
API (#2543)Ensure remote ethereum provider connection is automatically established with characters. Fixes default keyring filepath generation. (#2550)
Cache Alice’s transacting power for later activation. (#2555)
Prevent process hanging in the cases when the main thread finishes before the treasure map publisher (#2557)
Improved Documentation¶
Deprecations and Removals¶
Deprecated StakingEscrow features to reduce code size: batch deposits, testContract flag, locking reStake. Deployment of StakingEscrow is split in two steps: initial step with stub and final step after all contracts. (#2518)
Misc¶
Refactor FleetSensor; add “/status/?omit_known_nodes=true” argument; prevent internal constants from leaking into the status page. (#2352)
WorkLock prometheus metrics are only collected on mainnet. (#2546)
Sister demo for Finnegan’s wake for use on lynx/goerli testnet. Alice and Bob API cleanup compelled by EthDenver 2021. (#2560)
Rework internal transaction signing API for improved thread saftey. (#2572)
new seed URL for mainnet seeds.nucypher.network cloudworkers CLI updates (#2576)
Extends probationary period for policy creation in the network to 2021-04-30 23:59:59 UTC. (#2585)
v4.6.0 (2021-01-26)¶
Misc¶
Introduces the Lynx testnet, a more stable environment to learn how to use NuCypher and integrate it into other apps. (#2537)
v4.5.4 (2021-01-22)¶
Bugfixes¶
v4.5.3 (2021-01-18)¶
Bugfixes¶
Ensure minimum number of available peers for fleet-sourced IP determination and better handling of default teacher unavailability scenarios on startup (#2527)
v4.5.2 (2021-01-15)¶
No significant changes.
v4.5.1 (2021-01-15)¶
No significant changes.
v4.5.0 (2021-01-14)¶
Features¶
Bugfixes¶
More logging added for arrangement proposal failures, and more suitable exceptions thrown. (#2479)
Ignore pending Ethereum transactions for purposes of gas estimation. (#2486)
Fix rtd build after #2477 (#2489)
Fix rtd build after #2477 and #2489 (#2492)
cloudworkers bugfixes, cli args refactor and new “cloudworkers stop” feature. (#2494)
Gentler handling of unsigned stamps from stranger Ursulas on status endpoint (#2515)
Restore the re-raising behavior in
BlockchainInterface._handle_failed_transaction()
(#2521)
Improved Documentation¶
Deprecations and Removals¶
Misc¶
v4.4.0 (2020-12-24)¶
Features¶
Introduces “Character Cards” a serializable identity abstraction and ‘nucypher contacts’ CLI to support. (#2115)
nucypher cloudworkers now contains a complete and comprehensive set of features for easily managing, backing up and restoring one to many workers (#2365)
New composite gas strategy that uses the median from three different gas price oracles (currently, Etherchain, Upvest and gas-oracle.zoltu.io), which behaves more robustly against sporadic errors in the oracles (e.g., spikes, stuck feeds). (#2420)
Improve gas strategy selection: Infura users now can choose between
slow
,medium
andfast
, and a maximum gas price can be configured with –max-gas-price. (#2445)
Bugfixes¶
Misc¶
Solidity compilation refinements (#2461)
Deprecates internally managed geth process management (#2466)
Include checksum and IP addresses in exception messages for Rejected. (#2467)
Deprecates managed ethereum client syncing and stale interface methods (#2468)
Improves console messages for stakeholder CLI initialization and worker startup. (#2474)
Introduce a template to describe Pull Requests. (#2476)
v4.3.0 (2020-12-08)¶
Features¶
Bugfixes¶
Corrected minimum stake value for –min-stake CLI option (#2371)
Misc¶
v4.2.1 (2020-12-04)¶
Bugfixes¶
Removes tests import from constants module causing pip installed versions to crash. (#2452)
v4.2.0 (2020-12-03)¶
Features¶
Improve user experience when removing unused substakes (CLI and docs). (#2450)
Bugfixes¶
Improved Documentation¶
Misc¶
v4.1.2 (2020-11-09)¶
Features¶
Added support for a user-provided gas price to the
nucypher stake
command, using--gas-price GWEI
. (#2425)
Bugfixes¶
Correct CLI problems when setting the min fee rate. Also, simplifies usage by expressing rates in GWEI. (#2390)
Tone-down learning logging messages even more (see issue #1712). Fixes some CLI and exception messages. (#2395)
Fixes logical bug in
WorkTracker
to ensure commitment transactions can only be issued once per period. (#2406)Removes leftover imports of Twisted Logger, using instead our shim (Closes #2404). Also, changes NuCypher Logger behavior to always escape curly braces. (#2412)
Now
BlockchainInterface.gas_strategy
always has a value; previously it was possible to passNone
via the constructor (e.g. if the config file had an explicit"null"
value). (#2421)Take advantage of the changes in PR#2410 by retrying worker commitments on failure (#2422)
Domain “leakage”, or nodes saving metadata about nodes from other domains (but never being able to verify them) was still possible because domain-checking only occurred in the high-level APIs (and not, for example, when checking metadata POSTed to the node_metadata_exchange endpoint). This fixes that (fixes #2417).
Additionally, domains are no longer separated into “serving” or “learning”. Each Learner instance now has exactly one domain, and it is called domain. (#2423)
Misc¶
v4.1.1 (2020-10-29)¶
Features¶
Add CLI functionality for the removal of unused (inactive) sub-stakes. Depending on the staker’s sub-stake configuration, this command can reduce the associated worker’s gas costs when making commitments. (#2384)
Bugfixes¶
Automatically restart Ursula worker task on failure. (#2410)
Improved Documentation¶
Update global fee range documentation, including genesis values. (#2363)
Misc¶
v4.1.0 (2020-10-19)¶
Bugfixes¶
Temporary workaround for lack of single attribute for the value of “domain” in sprouts and mature nodes. (#2356)
Show the correct fleet state on Ursula status page. (#2368)
Don’t crash when handling failed transaction; reduce network learning messages. (#2375)
Reduce the greediness of prometheus metrics collection. (#2376)
Ensure minimum NU stake is allowed instead of stake creation failing for not enough tokens. (#2377)
Fixes to status page based on reworked design done in PR #2351. (#2378)
Track pending Ursula commitment transactions due to slower gas strategies. (#2389)
v4.0.1 (2020-10-14)¶
Misc¶
Set default teacher uri for mainnet. (#2367)
v4.0.0 (2020-10-14)¶
🚀 Mainnet Launch 🚀