Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace static fee system by dynamic fee system #13

Merged
merged 15 commits into from May 10, 2019

Conversation

@IkerAlus
Copy link
Member

commented Apr 25, 2019

Add the LIP "Replace static fee system by dynamic fee system".


Changes from the version found at research.lisk forum:

  • Minor format fixes.
  • Fix the size of Delegate Registration transaction in Appendix.
  • Add Include fee property in transaction JSON object subsection at Specification section.
  • Change 'trs.fee' property format to big-endian.
  • Include comment at Wallets subsection of Rationale section to address feedback from research.lisk forum.

IkerAlus added some commits Apr 25, 2019

- **Include fee property in transaction JSON object**: With the implementation of [LIP-0012](https://github.com/LiskHQ/lips/blob/master/proposals/lip-0012.md), the `trs.fee` property is going to be removed from the transaction JSON object since it is not needed for the current static fee system. However, this `trs.fee`, of type _BigNum_, has to be included in the transaction object, otherwise the nodes would not be able to get and verify the transaction fee.

- **Include fee property in transaction signature and transaction ID**: To prevent transaction fee forging and manipulation by malicious nodes/delegates, the transaction fee has to be part of the byte array used as input for the transaction signature and transaction ID generation (e.g. implemented by [`getBytes`](https://github.com/LiskHQ/lisk/blob/5d5af525eec7f2ee687ca921a6a2d1457c471da9/logic/transaction.js#L154) in Lisk core). The `trs.fee` property, with a size of 8 bytes and encoded in big-endian, has to follow the `trs.senderPublicKey` property during serialisation. Additionally, the [`getTransactionBytes`](https://github.com/LiskHQ/lisk-elements/blob/d5ab830ad65965764d364eb344ce4e3a13bf14c9/packages/lisk-transactions/src/utils/get_transaction_bytes.js#L147) function must be implemented in the same way in Lisk Elements.

This comment has been minimized.

Copy link
@janhack

janhack Apr 26, 2019

Contributor

I would say as input for the transaction signature generation or as input for the transaction signing.

This comment has been minimized.

Copy link
@IkerAlus

IkerAlus Apr 26, 2019

Author Member

changed to the first option

Update for Andreas' and Jan's review
This commit includes changes from Andreas' and Jan's comments. 
Also, it makes LIP-0009 required to avoid any kind of transaction replay attack from a previous protocol version, and added a footnote regarding this point at `Include fee property in transaction signature and transaction ID` subsection.
@shuse2

shuse2 approved these changes May 3, 2019

@karmacoma karmacoma changed the title Publish Replace static fee system by dynamic fee system LIP Replace static fee system by dynamic fee system May 6, 2019

karmacoma added some commits May 10, 2019

@karmacoma karmacoma added the ready label May 10, 2019

@karmacoma karmacoma merged commit 2b16fef into master May 10, 2019

@karmacoma karmacoma deleted the lip-replace_static_fee_system_by_dynamic_fee_system branch May 10, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.