factom
Version:
Library to build applications on the Factom blockchain
227 lines (134 loc) • 8.77 kB
Markdown
# Changelog
## [1.4.1]
Upgrade dependencies.
## [1.4.0]
### Added
- Add support for pending Factoid transactions to `FactomEventEmitter`.
## [1.3.0]
### Fixed
- Fix an incorrect behavior of `FactomEventEmitter` that would immediately emit an event when the first listener was attached. This can be a breaking change if you are relying on this initial event to be emitted.
- Fix TypeScript declaration file.
## [1.2.7]
### Added
- Pass the paying EC public address as the second argument to the signing function when using signature delegation.
## [1.2.6]
### Added
- `ApiError` now has a `data` field populated with the JSON-RPC error `data` field.
## [1.2.4]
### Added
- Basic support of cookies. This allows session affinity for Factom Open Node (currently uses a Cloudflare load balancer).
## [1.2.3]
### Added
- Added `retry` field to the `requestConfig` parameter of `FactomCli.factomdApi`, `FactomCli.walletdApi`, `FactomdCli.call` and `WalletdCli.call`. Allows to override the instance level retry strategy for a single API call.
## [1.2.0]
### Added
- Added `timeout` option to `ConnectionOptions`. Allows to set a timeout for all API requests made by `FactomCli`, `FactomdCli` and `WalletdCli`.
- Added a 3rd optional `requestConfig` parameter to `FactomCli.factomdApi`, `FactomCli.walletdApi`, `FactomdCli.call` and `WalletdCli.call`. Currenly only allows to specify a request timeout.
## [1.1.1]
### Fixed
- Fix `FactomEventEmitter` typescript definition.
## [1.1.0]
### Added
- New `FactomEventEmitter` that can emit various blockchain events (see doc for details).
- New methods `composeChainCommitDelegateSig`, `composeChainDelegateSig`, `composeEntryCommitDelegateSig` and `composeEntryDelegateSig` for delegating signing of chain and entry commits to an external function (usage for hardware wallet).
- `FactomCli#add*` and `FactomCli#commit*` methods now support delegating signing of the commit messages by passing a `sign` function in the options.
### Deprecated
- `chunkSize` option for the `FactomCli#add*` methods has been deprecated and replaced by `concurrency`.
- Depracated `signature` third argument of functions `composeChainCommit`, `composeChain`, `composeEntryCommit` and `composeEntryCommit`. Use the new `*DelegateSig` methods instead.
## [1.0.2]
### Removed
- Revert the unnecessary chanage in 1.0.1 for `rewindChainWhile` (the entry already contains a blockContext).
## [1.0.1]
### Added
- BlockContext populated for transactions in a `FactoidBlock` object (except `directoryBlockKeyMR` that is not available).
- `rewindChainWhile(chainId, predicate, fn)`: the `predicate` and `fn` functions now receive the entry block header as a second argument.
## [1.0.0]
### Added
- JSDoc of all public classes and methods.
- New util functions `generateRandomFctAddress` and `generateRandomEcAddress`.
- Method `toObject()` added to `Entry` and `Chain` classes. Returns a JavaScript object than can be serialized.
- TypeScript definition file (RewardChain contribution).
### Fixed
- Catch repeated commit exceptions properly.
- Rejection of negative transaction fees.
- Handling of CORS with credentials.
- Handle case `Error.captureStackTrace` is undefined (Firefox).
- Fix bug preventing to instanciate `FactomdCli` without params.
### Changed
- More explicit ack errors.
- `getTransaction` throws an `Error` if no transaction is found instead of returning `undefined`. To be consistent with `getEntry` behavior.
- Redirect factomd `current-minute` API call to v2 path (intead of debug path).
- Increased performance of `getEntryWithBlockContext`: fixed cost of 3 factomd API calls instead of rewinding the entry blocks of the chain.
- `keyToPrivateFctAddress` renamed `seedToPrivateFctAddress`.
- `keyToPrivateEcAddress` renamed `seedToPrivateEcAddress`.
- `add` throws an Error when trying to create a chain that already exists.
- All the `add*` functions validate by default that the paying EC address holds enough funds to pay for the commits. Can be bypassed by setting the option `skipFundValidation` to `true`.
- Added a check before sending a transaction that all EC ouputs have a factoshi amount above the minimum amount required to get at least 1 EC. It can be bypassed using the `force` option of `sendTransaction` method.
- Renamed `isValidFctPublicAddress`, `isValidFctPrivateAddress`, `isValidEcPrivateAddress` and `isValidEcPublicAddress` to respectively `isValidPublicFctAddress`, `isValidPrivateFctAddress`, `isValidPrivateEcAddress` and `isValidPublicEcAddress`.
### Removed
- Remove `FactomCli` methods `getNodeProperties` and `getWalletProperties`. Unnecessary wrappers.
- Do not expose internal constants anymore.
## [0.3.6] 2018-10-03
### Fixed
- Use Babel plugin `@babel/transform-modules-commonjs` to fix integration in the browser (broke after upgrade to Babel 7).
## [0.3.5] 2018-09-26
### Fixed
- Parsing of the descriptor index in an Admin block coinbase cancel entry.
## [0.3.4] 2018-09-13
### Added
- New FacomCli method `rewindChainWhile` that allows to iterate on a chain entry by entry.
- Expose `composeChainLedger` and `composeEntryLedger` functions.
- Allow manual signature of entry and chain commits (hardware wallet integration): `composeChainCommit` and `composeEntryCommit` can now take an EC public address as the 2nd argument and the commit signature as the 3rd argument.
## [0.3.3] 2018-09-10
### Added
- Options to override default API paths (`/v2` and `/debug`).
## [0.3.2] 2018-09-05
### Changed
- Renamed `addressToRcd` to `addressToRcdHash`. (breaking change)
- Fixed README.
## [0.3.1] 2018-08-29
### Changed
- Upgrade to Babel 7 for the bundling process.
## [0.3] 2018-08-27
### Added
- Create a second webpack bundle `factom-struct` containing only factom.js data structures, excluding all online calls related components (FactomCli...). Util for client side applications (browser).
- Check that transaction amounts are JS safe integers.
- `Chain` constructor now accepts another Chain to create a deep copy of it.
- FactomCli exposes `getPrivateAddress(address)`
### Changed
- `Entry.Builder(entry)` now makes a deep copy of entry.
- `entryBlockContext` method of the Entry builder renamed `blockContext`.
- Replaced dependency on `bn.js` by `long`.
- Replaced dependency on `elliptic` by `tweetnacl`. Tweetnacl is lighter and formally audited.
### Fixed
- Fixed blunt error when calling `getFirstEntry` and `getEntryWithBlockContext` for a chain that is not yet included in a Directory Block.
## [0.2.6] 2018-07-26
### Added
- New universal `add(obj, ecAddress)` function that can take as a first argument an Entry, a Chain, or an iterable containing any of those classes (can be mixed). Meant to replace the use of `addEntry`, `addChain`, `addEntries` and `addChains` (kept for backward compatibility).
- New `commit` and `reveal` functions that can take as a first argument an Entry or a Chain. Meant to replace the use of `commitEntry`/`commitChain` and `revealEntry`/`revealChain` respectively.
### Changed
- When used with list of Entries or Chains `add` chunks the list to bound the number of concurrent promises started (default to 200). Can be controlled with an attribute `chunkSize` of the `options` argument of this method.
## [0.2.5] 2018-07-15
### Changed
- `addressToKey` doesn't accept public Factoid addresses anymore. Created explicit `addressToRcd` function to handle public Factoid addresses. (breaking change)
## [0.2.4] 2018-07-12
### Added
- Add support for RPC user/password basic authentication
- Add option 'rejectUnauthorized' to allow connection to https nodes with self-signed certificates
### Fixed
- Fix M1 EntryCredit blocks parsing https://github.com/PaulBernier/factomjs/issues/1
## [0.2.3] 2018-06-26
### Changed
- Parse Admin Block entries
## [0.2.2] 2018-06-01
### Fixed
- Fix the `dist/factom.js` file. Now using webpack to build.
## [0.2] 2018-05-24
- More robust API calls: replaced factomdjs and factom-walletdjs by custom implementation with retry strategy. Possitibilty to customize retry strategy.
- Usage of `factomdApi` and `walletdApi` now mimics the raw API interfaces.
- Introduced the concept of 'BlockContext' for Entries and Transactions.
- Added methods for manipulating addresses and cryptographic keys. Lead to removal of dependency on factomjs-util
- Removal of dependencies lead to a much slimmer build!
- Fixed browserify build, now generates a minified version of the distribution file.
- Significantly increase code coverage (+ added code coverage tool).
- Various optimizations and bug fixes