Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
486d378
Added #4 check if an aggregate complete transaction has all cosignato…
rg911 Mar 18, 2019
f4c9cbb
initlal checkin. Added maFee to transaction models
rg911 Mar 5, 2019
882971d
WIP #53: rewrite all transaction classes to add maxFee in create meth…
evias Mar 5, 2019
b1905fd
issue #53: make maxFee field optional with default value 0
evias Mar 25, 2019
02e4517
issue #53: implementation proposal for Transaction.size and type clas…
evias Mar 25, 2019
7db5995
issue #100: fix BlockInfo fields & #53: add TransactionHttp.getTransa…
evias Mar 25, 2019
d85e435
PR #101: fix AccountPropertyTransaction import
evias Mar 26, 2019
4896b41
PR #101: Rebase to latest master upgrade ; Fixed maxFee in merge
evias Mar 26, 2019
7d1d2fb
Added #4 check if an aggregate complete transaction has all cosignato…
rg911 Mar 18, 2019
91566e4
PR #101: fixed CreateTransactionFromDTO maxFee fields ; finalized get…
evias Mar 26, 2019
41b0b45
#4
rg911 Apr 1, 2019
e50f160
Merge branch 'task/g4_check_act_has_all_sosignatories' of github.com:…
rg911 Apr 1, 2019
319ba1d
Added #4 check if an aggregate complete transaction has all cosignato…
rg911 Mar 18, 2019
b740dee
#4
rg911 Apr 1, 2019
93e4ad6
Merge branch 'task/g4_check_act_has_all_sosignatories' of github.com:…
rg911 Apr 1, 2019
08c8ce3
Updated license year
rg911 Apr 1, 2019
f32982d
Added #4 check if an aggregate complete transaction has all cosignato…
rg911 Mar 18, 2019
41eb60e
#4
rg911 Apr 1, 2019
478c8a4
Updated license year
rg911 Apr 1, 2019
3b470d1
Merge branch 'task/g4_check_act_has_all_sosignatories' of github.com:…
rg911 Apr 2, 2019
6267a19
Fixed #107 - Fixed issues on createFromDTO with JSON payload
rg911 Apr 2, 2019
3d1d1f6
Added check in validate cosignatories for
rg911 Apr 3, 2019
7a420e7
Fixed bug in create transaction from payload
rg911 Apr 4, 2019
c37da2d
Added more test cases and fixed a few bugs
rg911 Apr 5, 2019
31a96e2
added extractMessage methods.
rg911 Apr 5, 2019
c513cc5
add EncryptedMessage class
dl-nice Apr 8, 2019
90b3d8c
add MessageType
dl-nice Apr 8, 2019
6da136e
add MessageType
dl-nice Apr 8, 2019
2260b5f
Renamed PlainMessage.createFromDTO to createFromPayload
rg911 Apr 8, 2019
dbb9cc1
Added #109 Make duration optiuon for mosaic definition
rg911 Apr 8, 2019
b7989c4
Fixed bug on mosaic nounce
rg911 Apr 8, 2019
295bbff
made mosaic properties duration option to all references
rg911 Apr 8, 2019
c5697ca
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
ddef626
Merge branch 'master' into add/EncryptedMessage
evias Apr 9, 2019
221887b
Merge branch 'master' into task/g53_fees
evias Apr 9, 2019
8f52525
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
2c8be0b
PR #101: fixed block DTOs with beneficiary field DTO problem
evias Apr 10, 2019
8f36562
Merge pull request #101 from evias/task/g53_fees
evias Apr 10, 2019
77b43b3
Merge branch 'master' into task/g4_check_act_has_all_sosignatories
evias Apr 10, 2019
6f9db68
Added #109 Make duration optiuon for mosaic definition
rg911 Apr 8, 2019
8d3ea5d
made mosaic properties duration option to all references
rg911 Apr 8, 2019
e3e3834
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
4fe51d7
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
9294f9f
Merge branch 'master' into task/g107_fromDTO_fails_to_load_transactions
evias Apr 10, 2019
f0ccb82
Merge branch 'task/g109_optional_duration_for_mosaic_transaction' of …
rg911 Apr 10, 2019
eb2e12f
renamed AggregatedTransactionService
rg911 Apr 10, 2019
5776201
#4
rg911 Apr 1, 2019
e406292
Merge pull request #108 from rg911/task/g107_fromDTO_fails_to_load_tr…
evias Apr 10, 2019
90e805f
Updated license year
rg911 Apr 1, 2019
f570b44
Merge branch 'master' into add/EncryptedMessage
evias Apr 10, 2019
c33a4c3
Added check in validate cosignatories for
rg911 Apr 3, 2019
9c4ae75
Fixed bug in create transaction from payload
rg911 Apr 4, 2019
ffed0a7
Added more test cases and fixed a few bugs
rg911 Apr 5, 2019
461f34b
renamed AggregatedTransactionService
rg911 Apr 10, 2019
91931f0
Merge branch 'task/g4_check_act_has_all_sosignatories' of github.com:…
rg911 Apr 10, 2019
54d8778
Merge pull request #110 from NemTechCN/add/EncryptedMessage
evias Apr 10, 2019
f944d3b
#4
rg911 Apr 1, 2019
516b5e6
Updated license year
rg911 Apr 1, 2019
fb47164
Added check in validate cosignatories for
rg911 Apr 3, 2019
daeb1cb
Fixed bug in create transaction from payload
rg911 Apr 4, 2019
3da7cf7
Added more test cases and fixed a few bugs
rg911 Apr 5, 2019
1cef7f8
renamed AggregatedTransactionService
rg911 Apr 10, 2019
18a5f2a
#4
rg911 Apr 1, 2019
df799f6
Updated license year
rg911 Apr 1, 2019
6a01621
Added check in validate cosignatories for
rg911 Apr 3, 2019
e6136e0
Added more test cases and fixed a few bugs
rg911 Apr 5, 2019
9754295
renamed AggregatedTransactionService
rg911 Apr 10, 2019
a28caf5
Merge branch 'task/g4_check_act_has_all_sosignatories' of github.com:…
rg911 Apr 10, 2019
85439ba
Fixed issue on createTransactionFromJson
rg911 Apr 10, 2019
bca5ac9
Added #109 Make duration optiuon for mosaic definition
rg911 Apr 8, 2019
ab012c8
Merge branch 'master' into task/g4_check_act_has_all_sosignatories
evias Apr 10, 2019
86daf36
made mosaic properties duration option to all references
rg911 Apr 8, 2019
ab82539
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
ed85c28
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
d7690d5
Added #109 Make duration optiuon for mosaic definition
rg911 Apr 8, 2019
ea8df0f
made mosaic properties duration option to all references
rg911 Apr 8, 2019
dc40691
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
4282d6a
Merge pull request #106 from rg911/task/g4_check_act_has_all_sosignat…
evias Apr 10, 2019
be9d05e
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
7ecbc88
Merge branch 'task/g109_optional_duration_for_mosaic_transaction' of …
rg911 Apr 10, 2019
057d05d
Fixed a few merge issues
rg911 Apr 10, 2019
ecf1cdd
Update CHANGELOG.md
dgarcia360 Apr 10, 2019
9f47bd5
Updated lib version to 0.9.14
rg911 Apr 10, 2019
6ca8bee
Added #109 Make duration optiuon for mosaic definition
rg911 Apr 8, 2019
74bf17a
made mosaic properties duration option to all references
rg911 Apr 8, 2019
1049896
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
1b53a9a
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
6f341ad
made mosaic properties duration option to all references
rg911 Apr 8, 2019
67363f5
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
f04bdee
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
8ca5f94
made mosaic properties duration option to all references
rg911 Apr 8, 2019
1225557
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
3c097f4
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
293f17f
Added #109 Make duration optiuon for mosaic definition
rg911 Apr 8, 2019
bba4ddf
made mosaic properties duration option to all references
rg911 Apr 8, 2019
797b469
Updared tslint to disable "no-non-null-assertion"
rg911 Apr 8, 2019
5a03c05
Fixed white space issue on TransactionMapping test
rg911 Apr 9, 2019
2432e73
Fixed a few merge issues
rg911 Apr 10, 2019
b0b4f23
Updated lib version to 0.9.14
rg911 Apr 10, 2019
af1b7f0
Merge branch 'task/g109_optional_duration_for_mosaic_transaction' of …
rg911 Apr 10, 2019
b6a5566
Fixed encrypt message upper case issue
rg911 Apr 10, 2019
58a3f11
removed unused import in EncryptedMessage test
rg911 Apr 10, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 46 additions & 24 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,54 @@
# CHANGELOG
# Changelog
All notable changes to this project will be documented in this file.

# v0.11
The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

- Fixed NetworkCurrencyMosaic, NetworkHarvestMosaic
- Added exposed UInt64.fromHex and UInt64.toHex
- Added MosaicId.createFromNonce
- Added MosaicNonce, MosaicNonce.createRandom
- Fixed AliasDTO.mosaicId to be UInt64
- Added nem2-library@v0.9.8 version update (cow compatibility)
- Added cow network update *base* compatibility
- Added AliasTransaction, AddressAliasTransaction, MosaicAliasTransaction
- Changed MosaicDefinition to hold MosaicNonce
- Changed SecretLock transaction to work with Sha3_256 instead of Sha3_512
- Added delegated harvesting
- Fixed #38: error message for aggregate as inner tx
- Added TransferTransaction.recipient NamespaceId argument type
## [0.11.2] - 1-Apr-2019
- Todo.

# v0.10.1-beta
## [0.11.1] - 18-Mar-2019
- Todo.
## [0.11] - 14-Mar-2019

- added replyGiven in Transaction model
- several linter fixes
## Added
- UInt64.fromHex and UInt64.toHex functions have been exposed.
- Error message when a developer tries to add an aggregate as an inner transaction.
- AccountLink Transaction to enable delegated harvesting.
- Support for AliasTransaction.
- TransferTransactions can be sent to an alias instead of an address.

# v0.10.0-beta
## Changed
- Mosaics were splited from namespaces. MosaicDefinition does not have a related namespaceId, but instead a MosaicNonce.
- SecretLockTransaction to work with Sha3_256 instead of Sha3_512
- Network and nem2-library (0.9.8) required update to be compatible with catpault-server 0.3.
- XEM class splited into NetworkCurrencyMosaic and NetworkHarvestMosaic.

- update rxjs to v6
- use observableFrom
## [0.10.1-beta] - 27-Jun-2018

# v0.9.5
## Added
- Transaction deadline has been exposed to the public.

- data signatures
- nodejs version 10 updates
## Changed
- Compatibility with rxjs v6.

## Fixed
- Several linter errors.

## [0.9.5] - 27-Jun-2018

## Added
- An account can sign strings with its private key, and verify the signature later.

## Changed
- Compatibility with Node.js 10.

## [0.9.0] - 30-Mar-2018
### Added
- Initial code release.

[0.11.2]: https://github.com/nemtech/nem2-sdk-typescript-javascript/compare/v0.11.1...v0.11.2
[0.11.1]: https://github.com/nemtech/nem2-sdk-typescript-javascript/compare/v0.11.0...v0.11.1
[0.11]: https://github.com/nemtech/nem2-sdk-typescript-javascript/compare/v0.10.1-beta...v0.11.0
[0.10.1-beta]: https://github.com/nemtech/nem2-sdk-typescript-javascript/compare/v0.9.5...v0.10.1-beta
[0.9.5]: https://github.com/nemtech/nem2-sdk-typescript-javascript/compare/v0.9.0...v0.9.5
[0.9.0]: https://github.com/nemtech/nem2-sdk-typescript-javascript/releases/tag/v0.9.0
11 changes: 11 additions & 0 deletions e2e/infrastructure/TransactionHttp.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -874,4 +874,15 @@ describe('TransactionHttp', () => {
});
});
});

describe('getTransactionEffectiveFee', () => {
it('should return effective paid fee given transactionHash', (done) => {
transactionHttp.getTransactionEffectiveFee(transactionHash)
.subscribe((effectiveFee) => {
expect(effectiveFee).to.not.be.undefined;
expect(effectiveFee).to.be.equal(0);
done();
});
});
});
});
1 change: 1 addition & 0 deletions e2e/infrastructure/TransactionUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import { MultisigCosignatoryModification } from '../../src/model/transaction/Mul
import { MultisigCosignatoryModificationType } from '../../src/model/transaction/MultisigCosignatoryModificationType';
import {PlainMessage} from '../../src/model/transaction/PlainMessage';
import {TransferTransaction} from '../../src/model/transaction/TransferTransaction';
import {UInt64} from '../../src/model/UInt64';
import {CosignatoryAccount, MultisigAccount, NIS2_URL, TestingAccount} from '../../test/conf/conf.spec';

export class TransactionUtils {
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"@types/crypto-js": "^3.1.43",
"crypto-js": "^3.1.9-1",
"js-joda": "^1.6.2",
"nem2-library": "^0.9.13",
"nem2-library": "^0.9.14",
"request": "^2.83.0",
"request-promise-native": "^1.0.5",
"rxjs": "^6.2.1",
Expand Down
10 changes: 9 additions & 1 deletion src/infrastructure/BlockchainHttp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import {UInt64} from '../model/UInt64';
import {BlockchainRepository} from './BlockchainRepository';
import {Http} from './Http';
import {QueryParams} from './QueryParams';
import {CreateTransactionFromDTO} from './transaction/CreateTransactionFromDTO';
import {CreateTransactionFromDTO, extractBeneficiary} from './transaction/CreateTransactionFromDTO';

/**
* Blockchain http repository.
Expand Down Expand Up @@ -70,8 +70,12 @@ export class BlockchainHttp extends Http implements BlockchainRepository {
new UInt64(blockDTO.block.height),
new UInt64(blockDTO.block.timestamp),
new UInt64(blockDTO.block.difficulty),
blockDTO.block.feeMultiplier,
blockDTO.block.previousBlockHash,
blockDTO.block.blockTransactionsHash,
blockDTO.block.blockReceiptsHash,
blockDTO.block.stateHash,
extractBeneficiary(blockDTO, networkType),
);
}));
}
Expand Down Expand Up @@ -116,8 +120,12 @@ export class BlockchainHttp extends Http implements BlockchainRepository {
new UInt64(blockDTO.block.height),
new UInt64(blockDTO.block.timestamp),
new UInt64(blockDTO.block.difficulty),
blockDTO.block.feeMultiplier,
blockDTO.block.previousBlockHash,
blockDTO.block.blockTransactionsHash,
blockDTO.block.blockReceiptsHash,
blockDTO.block.stateHash,
extractBeneficiary(blockDTO, networkType),
);
});
}));
Expand Down
7 changes: 6 additions & 1 deletion src/infrastructure/Listener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import * as WebSocket from 'ws';
import {Address} from '../model/account/Address';
import {PublicAccount} from '../model/account/PublicAccount';
import {BlockInfo} from '../model/blockchain/BlockInfo';
import {NetworkType} from '../model/blockchain/NetworkType';
import {NamespaceId} from '../model/namespace/NamespaceId';
import {AggregateTransaction} from '../model/transaction/AggregateTransaction';
import {AggregateTransactionCosignature} from '../model/transaction/AggregateTransactionCosignature';
Expand All @@ -33,7 +34,7 @@ import {Transaction} from '../model/transaction/Transaction';
import {TransactionStatusError} from '../model/transaction/TransactionStatusError';
import {TransferTransaction} from '../model/transaction/TransferTransaction';
import {UInt64} from '../model/UInt64';
import {CreateTransactionFromDTO} from './transaction/CreateTransactionFromDTO';
import {CreateTransactionFromDTO, extractBeneficiary} from './transaction/CreateTransactionFromDTO';

enum ListenerChannelName {
block = 'block',
Expand Down Expand Up @@ -135,8 +136,12 @@ export class Listener {
new UInt64(message.block.height),
new UInt64(message.block.timestamp),
new UInt64(message.block.difficulty),
message.block.feeMultiplier,
message.block.previousBlockHash,
message.block.blockTransactionsHash,
message.block.blockReceiptsHash,
message.block.stateHash,
extractBeneficiary(message, networkType), // passing `message` as `blockDTO`
),
});
} else if (message.status) {
Expand Down
37 changes: 35 additions & 2 deletions src/infrastructure/TransactionHttp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,18 @@
* limitations under the License.
*/

import {TransactionRoutesApi} from 'nem2-library';
import {BlockchainRoutesApi, TransactionRoutesApi} from 'nem2-library';
import * as requestPromise from 'request-promise-native';
import {from as observableFrom, Observable, throwError as observableThrowError} from 'rxjs';
import {catchError, map} from 'rxjs/operators';
import {catchError, map, mergeMap} from 'rxjs/operators';
import {PublicAccount} from '../model/account/PublicAccount';
import {CosignatureSignedTransaction} from '../model/transaction/CosignatureSignedTransaction';
import {Deadline} from '../model/transaction/Deadline';
import {SignedTransaction} from '../model/transaction/SignedTransaction';
import { SyncAnnounce } from '../model/transaction/SyncAnnounce';
import {Transaction} from '../model/transaction/Transaction';
import {TransactionAnnounceResponse} from '../model/transaction/TransactionAnnounceResponse';
import {TransactionInfo} from '../model/transaction/TransactionInfo';
import {TransactionStatus} from '../model/transaction/TransactionStatus';
import {TransactionType} from '../model/transaction/TransactionType';
import {UInt64} from '../model/UInt64';
Expand All @@ -44,13 +45,20 @@ export class TransactionHttp extends Http implements TransactionRepository {
*/
private transactionRoutesApi: TransactionRoutesApi;

/**
* @internal
* Nem2 Library blockchain routes api
*/
private blockchainRoutesApi: BlockchainRoutesApi;

/**
* Constructor
* @param url
*/
constructor(private readonly url: string) {
super(url);
this.transactionRoutesApi = new TransactionRoutesApi(this.apiClient);
this.blockchainRoutesApi = new BlockchainRoutesApi(this.apiClient);
}

/**
Expand Down Expand Up @@ -190,4 +198,29 @@ export class TransactionHttp extends Http implements TransactionRepository {
return observableThrowError(err);
}));
}

/**
* Gets a transaction's effective paid fee
* @param transactionId - Transaction id or hash.
* @returns Observable<number>
*/
public getTransactionEffectiveFee(transactionId: string): Observable<number> {
return observableFrom(this.transactionRoutesApi.getTransaction(transactionId)).pipe(
mergeMap((transactionDTO) => {
// parse transaction to take advantage of `size` getter overload
const transaction = CreateTransactionFromDTO(transactionDTO);
const uintHeight = (transaction.transactionInfo as TransactionInfo).height;

// now read block details
return observableFrom(this.blockchainRoutesApi.getBlockByHeight(uintHeight.compact())).pipe(
map((blockDTO) => {

// @see https://nemtech.github.io/concepts/transaction.html#fees
// effective_fee = feeMultiplier x transaction::size
return blockDTO.block.feeMultiplier * transaction.size;
}));
}), catchError((err) => {
return observableThrowError(err);
}));
}
}
7 changes: 7 additions & 0 deletions src/infrastructure/TransactionRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ export interface TransactionRepository {
*/
getTransactionsStatuses(transactionHashes: string[]): Observable<TransactionStatus[]>;

/**
* Gets a transaction's effective paid fee
* @param transactionId - Transaction id or hash.
* @returns Observable<number>
*/
getTransactionEffectiveFee(transactionId: string): Observable<number>;

/**
* Send a signed transaction
* @param signedTransaction - Signed transaction
Expand Down
Loading