├── netlify.toml ├── package.json ├── assets ├── hiero_logo.png ├── hedera_logo.png ├── hip-1 │ ├── dco_fail.png │ ├── dco_success.png │ ├── hip-states-ipa.png │ └── hip-states-standards-track.png ├── hip-367 │ └── updates.png ├── images │ ├── favicon.png │ ├── github-mark.png │ └── hh_meta_hips.png ├── hip-1261 │ └── tx-fees.png ├── hip-15 │ ├── HIP-15-all.zip │ ├── HIP-15-spreadsheet.xlsx │ ├── HIP-15-pseudocode.md │ └── HIP-15-mathematica.nb.txt ├── hip-755 │ └── multiSigHIP755.png ├── hip-28 │ ├── guardian-topics-map.png │ ├── Detailed Architecture.png │ ├── policy-workflow-example.jpg │ ├── conceptual-view-relationships.jpg │ ├── conceptual-view-workflow-engine.jpg │ ├── verifiable-presentation-example.jpg │ └── Guardian Architecture - Architecture v2.png ├── hip-631 │ ├── account-evm-address.png │ └── transaction-evm-address-resolution.png ├── hip-583 │ ├── auto-create-with-key.png │ └── lazy-create-with-address.png ├── hip-777 │ ├── pendingTokenTransfer.png │ ├── createPendingTokenTransfers.png │ ├── completePendingTokenTransfers.png │ └── observingPendingTokenTransfers.png ├── hip-0000 │ └── metamaskPendingTransfer.png ├── hip-478 │ └── HSCS-HCS-oracle-network.png ├── hip-482 │ └── JSON-RPC Relay Diagrams.png ├── hip-1259 │ └── fee-collection-account-flow.png ├── hip-904 │ ├── frictionless-airdrop-tokenCancel.png │ ├── frictionless-airdrop-tokenClaim.png │ ├── frictionless-airdrop-tokenReject.png │ ├── frictionless-airdrop-tokenAirdropTransaction.png │ └── frictionless-airdrop-cryptoTransferTransaction.png ├── hip-623 │ └── Protobuf restrictions for Hedera precompile methods (proposed).pdf ├── hip-206 │ └── solidity │ │ ├── ExpiryHelper.sol │ │ ├── KeyHelper.sol │ │ └── FeeHelper.sol ├── regex.js ├── hip-1056 │ └── protobuf │ │ ├── stream │ │ ├── input │ │ │ ├── round_header.proto │ │ │ └── event_header.proto │ │ ├── output │ │ │ ├── network_service.proto │ │ │ ├── util_service.proto │ │ │ ├── file_service.proto │ │ │ ├── crypto_service.proto │ │ │ ├── smart_contract_service.proto │ │ │ ├── block_header.proto │ │ │ └── schedule_service.proto │ │ ├── block.proto │ │ └── record_file_item.proto │ │ └── services │ │ └── contract_types.proto ├── js │ ├── search-results.js │ ├── hipstable.js │ └── tooltip.js └── hip-1081 │ └── protobuf │ ├── shared_message_types.proto │ ├── node_service.proto │ ├── state_service.proto │ └── block_access_service.proto ├── index.html ├── _data └── statuses.yaml ├── _includes ├── hipnums.html ├── header.html ├── authorslist.html ├── workinggrouplist.html ├── search-form.html ├── head.html ├── toc.html └── anchor_headings.html ├── .gitignore ├── .github ├── dependabot.yml ├── CODEOWNERS └── workflows │ ├── send-email.yml │ ├── notifications.yml │ ├── validateHeaders.yml │ └── send-discord-message.yml ├── 404.html ├── search.json ├── Gemfile ├── HIP ├── hip-254.md ├── hip-372.md ├── hip-1126.md ├── hip-1049.md ├── hip-394.md ├── hip-31.md ├── hip-213.md ├── hip-564.md ├── hip-1021.md ├── hip-198.md ├── hip-20.md ├── hip-782.md ├── hip-478.md ├── hip-874.md ├── hip-1008.md ├── hip-865.md ├── hip-968.md ├── hip-323.md ├── hip-945.md ├── hip-584.md ├── hip-227.md ├── hip-844.md ├── hip-850.md ├── hip-542.md └── hip-794.md ├── _layouts └── default.html ├── MAINTAINERS.md ├── _config.yml ├── Gemfile.lock ├── CODE_OF_CONDUCT.md └── README.md /netlify.toml: -------------------------------------------------------------------------------- 1 | [[redirects]] 2 | from = "/all" 3 | to = "/" 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "simple-jekyll-search": "^1.10.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /assets/hiero_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hiero_logo.png -------------------------------------------------------------------------------- /assets/hedera_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hedera_logo.png -------------------------------------------------------------------------------- /assets/hip-1/dco_fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-1/dco_fail.png -------------------------------------------------------------------------------- /assets/hip-367/updates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-367/updates.png -------------------------------------------------------------------------------- /assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/images/favicon.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: HIPs 4 | --- 5 | 6 |
7 | {% include hipstable.md hips=site.pages %} 8 |
-------------------------------------------------------------------------------- /assets/hip-1/dco_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-1/dco_success.png -------------------------------------------------------------------------------- /assets/hip-1261/tx-fees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-1261/tx-fees.png -------------------------------------------------------------------------------- /assets/hip-15/HIP-15-all.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-15/HIP-15-all.zip -------------------------------------------------------------------------------- /assets/hip-1/hip-states-ipa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-1/hip-states-ipa.png -------------------------------------------------------------------------------- /assets/images/github-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/images/github-mark.png -------------------------------------------------------------------------------- /assets/images/hh_meta_hips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/images/hh_meta_hips.png -------------------------------------------------------------------------------- /assets/hip-755/multiSigHIP755.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-755/multiSigHIP755.png -------------------------------------------------------------------------------- /assets/hip-15/HIP-15-spreadsheet.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-15/HIP-15-spreadsheet.xlsx -------------------------------------------------------------------------------- /assets/hip-28/guardian-topics-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/guardian-topics-map.png -------------------------------------------------------------------------------- /assets/hip-631/account-evm-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-631/account-evm-address.png -------------------------------------------------------------------------------- /assets/hip-28/Detailed Architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/Detailed Architecture.png -------------------------------------------------------------------------------- /assets/hip-28/policy-workflow-example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/policy-workflow-example.jpg -------------------------------------------------------------------------------- /assets/hip-583/auto-create-with-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-583/auto-create-with-key.png -------------------------------------------------------------------------------- /assets/hip-777/pendingTokenTransfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-777/pendingTokenTransfer.png -------------------------------------------------------------------------------- /assets/hip-0000/metamaskPendingTransfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-0000/metamaskPendingTransfer.png -------------------------------------------------------------------------------- /assets/hip-1/hip-states-standards-track.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-1/hip-states-standards-track.png -------------------------------------------------------------------------------- /assets/hip-478/HSCS-HCS-oracle-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-478/HSCS-HCS-oracle-network.png -------------------------------------------------------------------------------- /assets/hip-482/JSON-RPC Relay Diagrams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-482/JSON-RPC Relay Diagrams.png -------------------------------------------------------------------------------- /assets/hip-583/lazy-create-with-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-583/lazy-create-with-address.png -------------------------------------------------------------------------------- /assets/hip-777/createPendingTokenTransfers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-777/createPendingTokenTransfers.png -------------------------------------------------------------------------------- /assets/hip-1259/fee-collection-account-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-1259/fee-collection-account-flow.png -------------------------------------------------------------------------------- /assets/hip-28/conceptual-view-relationships.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/conceptual-view-relationships.jpg -------------------------------------------------------------------------------- /assets/hip-777/completePendingTokenTransfers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-777/completePendingTokenTransfers.png -------------------------------------------------------------------------------- /assets/hip-28/conceptual-view-workflow-engine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/conceptual-view-workflow-engine.jpg -------------------------------------------------------------------------------- /assets/hip-28/verifiable-presentation-example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/verifiable-presentation-example.jpg -------------------------------------------------------------------------------- /assets/hip-777/observingPendingTokenTransfers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-777/observingPendingTokenTransfers.png -------------------------------------------------------------------------------- /assets/hip-904/frictionless-airdrop-tokenCancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-904/frictionless-airdrop-tokenCancel.png -------------------------------------------------------------------------------- /assets/hip-904/frictionless-airdrop-tokenClaim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-904/frictionless-airdrop-tokenClaim.png -------------------------------------------------------------------------------- /assets/hip-904/frictionless-airdrop-tokenReject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-904/frictionless-airdrop-tokenReject.png -------------------------------------------------------------------------------- /assets/hip-631/transaction-evm-address-resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-631/transaction-evm-address-resolution.png -------------------------------------------------------------------------------- /assets/hip-28/Guardian Architecture - Architecture v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-28/Guardian Architecture - Architecture v2.png -------------------------------------------------------------------------------- /assets/hip-904/frictionless-airdrop-tokenAirdropTransaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-904/frictionless-airdrop-tokenAirdropTransaction.png -------------------------------------------------------------------------------- /_data/statuses.yaml: -------------------------------------------------------------------------------- 1 | - Draft 2 | - Review 3 | - Last Call 4 | - Approved 5 | - Accepted 6 | - Final 7 | - Active 8 | - Withdrawn 9 | - Rejected 10 | - Replaced 11 | - Stagnant 12 | - Deferred 13 | -------------------------------------------------------------------------------- /assets/hip-904/frictionless-airdrop-cryptoTransferTransaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-904/frictionless-airdrop-cryptoTransferTransaction.png -------------------------------------------------------------------------------- /_includes/hipnums.html: -------------------------------------------------------------------------------- 1 | {% assign hips=include.hips|split:"," %} 2 | {% for hipnum in hips %} 3 | {{hipnum|strip}}{% if forloop.last == false %}, {% endif %} 4 | {% endfor %} -------------------------------------------------------------------------------- /assets/hip-623/Protobuf restrictions for Hedera precompile methods (proposed).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hiero-ledger/hiero-improvement-proposals/HEAD/assets/hip-623/Protobuf restrictions for Hedera precompile methods (proposed).pdf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | ## Intellij 4 | *.idea 5 | *.iml 6 | 7 | # VSCode 8 | .vscode/ 9 | 10 | ## Jekyll 11 | _site/ 12 | .sass-cache/ 13 | .jekyll-cache/ 14 | .jekyll-metadata 15 | 16 | ## Environment normalization 17 | /.bundle/ 18 | /vendor/bundle 19 | .idea 20 | 21 | ## Node 22 | /node_modules/ -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: "/" 5 | schedule: 6 | interval: weekly 7 | open-pull-requests-limit: 10 8 | - package-ecosystem: npm 9 | directory: "/" 10 | schedule: 11 | interval: weekly 12 | open-pull-requests-limit: 10 13 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 |Page not found :(
23 |The requested page could not be found.
24 |37 | * This value SHALL be the result of a corresponding 38 | * `UtilService` `prng` transaction. 39 | */ 40 | bytes prng_bytes = 1; 41 | 42 | /** 43 | * A deterministic pseudo-random number generated within a 44 | * specified range. 45 | *
46 | * This value SHALL be the result of a corresponding `UtilService`
47 | * `prng` transaction.
48 | * This list SHALL begin with a `BlockHeader`.
69 | * This SHALL be unset if the contract call succeeded.
70 | */
71 | string error_message = 4;
72 |
73 | /**
74 | * EVM gas used.
75 | */
76 | uint64 gas_used = 5;
77 |
78 | /**
79 | * If not already externalized in a transaction body, the context of the
80 | * internal call producing this result.
81 | */
82 | InternalCallContext internal_call_context = 6;
83 | }
84 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | addressable (2.8.0)
5 | public_suffix (>= 2.0.2, < 5.0)
6 | colorator (1.1.0)
7 | concurrent-ruby (1.2.0)
8 | em-websocket (0.5.2)
9 | eventmachine (>= 0.12.9)
10 | http_parser.rb (~> 0.6.0)
11 | eventmachine (1.2.7)
12 | ffi (1.15.4)
13 | forwardable-extended (2.6.0)
14 | http_parser.rb (0.6.0)
15 | i18n (0.9.5)
16 | concurrent-ruby (~> 1.0)
17 | jekyll (3.9.0)
18 | addressable (~> 2.4)
19 | colorator (~> 1.0)
20 | em-websocket (~> 0.5)
21 | i18n (~> 0.7)
22 | jekyll-sass-converter (~> 1.0)
23 | jekyll-watch (~> 2.0)
24 | kramdown (>= 1.17, < 3)
25 | liquid (~> 4.0)
26 | mercenary (~> 0.3.3)
27 | pathutil (~> 0.9)
28 | rouge (>= 1.7, < 4)
29 | safe_yaml (~> 1.0)
30 | jekyll-feed (0.15.1)
31 | jekyll (>= 3.7, < 5.0)
32 | jekyll-sass-converter (1.5.2)
33 | sass (~> 3.4)
34 | jekyll-seo-tag (2.7.1)
35 | jekyll (>= 3.8, < 5.0)
36 | jekyll-watch (2.2.1)
37 | listen (~> 3.0)
38 | kramdown (2.3.1)
39 | rexml
40 | kramdown-parser-gfm (1.1.0)
41 | kramdown (~> 2.0)
42 | liquid (4.0.3)
43 | listen (3.7.0)
44 | rb-fsevent (~> 0.10, >= 0.10.3)
45 | rb-inotify (~> 0.9, >= 0.9.10)
46 | mercenary (0.3.6)
47 | minima (2.5.1)
48 | jekyll (>= 3.5, < 5.0)
49 | jekyll-feed (~> 0.9)
50 | jekyll-seo-tag (~> 2.1)
51 | pathutil (0.16.2)
52 | forwardable-extended (~> 2.6)
53 | public_suffix (4.0.6)
54 | rb-fsevent (0.11.0)
55 | rb-inotify (0.10.1)
56 | ffi (~> 1.0)
57 | rexml (3.2.8)
58 | strscan (>= 3.0.9)
59 | rouge (3.26.0)
60 | safe_yaml (1.0.5)
61 | sass (3.7.4)
62 | sass-listen (~> 4.0.0)
63 | sass-listen (4.0.0)
64 | rb-fsevent (~> 0.9, >= 0.9.4)
65 | rb-inotify (~> 0.9, >= 0.9.7)
66 | sawyer (0.8.2)
67 | addressable (>= 2.3.5)
68 | faraday (> 0.8, < 2.0)
69 | simpleidn (0.2.1)
70 | unf (~> 0.1.4)
71 | strscan (3.1.0)
72 | terminal-table (1.8.0)
73 | unicode-display_width (~> 1.1, >= 1.1.1)
74 | thread_safe (0.3.6)
75 | tzinfo (1.2.10)
76 | thread_safe (~> 0.1)
77 | tzinfo-data (1.2021.4)
78 | tzinfo (>= 1.0.0)
79 | wdm (0.1.1)
80 | webrick (1.7.0)
81 |
82 | PLATFORMS
83 | ruby
84 |
85 | DEPENDENCIES
86 | jekyll (~> 3.9.0)
87 | jekyll-feed (~> 0.6)
88 | kramdown-parser-gfm
89 | minima (~> 2.0)
90 | tzinfo (~> 1.2)
91 | tzinfo-data
92 | wdm (~> 0.1.0)
93 | webrick (~> 1.7)
94 |
95 | BUNDLED WITH
96 | 1.17.3
97 |
--------------------------------------------------------------------------------
/HIP/hip-1126.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 1126
3 | title: Delete Allowance without Token Association
4 | author: Michael Heinrichs <@netopyr>
5 | requested-by: GitHub issue https://github.com/hiero-ledger/hiero-consensus-node/issues/17441
6 | type: Standards Track
7 | category: Service
8 | needs-hedera-review: Yes
9 | needs-hiero-approval: Yes
10 | status: Accepted
11 | last-call-date-time: 2025-03-17T07:00:00Z
12 | created: 2025-02-17
13 | discussions-to: https://github.com/hiero-ledger/hiero-consensus-node/issues/17441
14 | updated: 2025-03-03
15 | ---
16 |
17 | ## Abstract
18 | To remove an allowance for a token, the token must be associated with the account.
19 | This is an unnecessary burden with no advantages.
20 | This HIP proposes to allow the removal of allowances without requiring the token to be associated.
21 |
22 | ## Motivation
23 | If a user wants to remove an allowance for a token without an association, one has to associate the token, remove the allowance, and dissociate the token again.
24 | This is a cumbersome and expensive process with no benefits.
25 | A user may decide to keep the allowances instead, which wastes resources and risks hitting the limit of allowed allowances.
26 |
27 | While it makes sense to associate the token before giving a non-zero allowance, it does not make sense that the token must be associated in order for the allowance to be removed.
28 |
29 | ## Rationale
30 | `CryptoDeleteAllowance` is used to delete allowances on NFTs. Once this HIP is implemented, it does not require the owner to have an association with the token.
31 |
32 | To delete the allowance of a fungible token, a user has to send a `CryptoApproveAllowance` with an amount of `0`. After this HIP is implemented, the owner does not require an association with the fungible token to execute this transaction.
33 |
34 | ## User stories
35 | 1. As a user, I want to remove an allowance without having to associate the token with my account first.
36 |
37 | ## Specification
38 | This change requires no changes to the HAPI or the record stream/block stream.
39 |
40 | ## Backwards Compatibility
41 | This HIP is fully backward compatible. It does not change the behavior of any existing functionality except for allowing the deletion of allowances in previously forbidden cases.
42 |
43 | ## Security Implications
44 | There are no security implications. Removing an allowance imposes no security risk.
45 |
46 | ## How to Teach This
47 | The `CryptoDeleteAllowance` and `CryptoApproveAllowance` documentation should be updated to reflect the new behavior.
48 |
49 | ## Copyright/license
50 | This document is licensed under the Apache License, Version 2.0 --
51 | see [LICENSE](../LICENSE) or (https://www.apache.org/licenses/LICENSE-2.0)
52 |
--------------------------------------------------------------------------------
/HIP/hip-1049.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 1049
3 | title: Deleted flag in ConsensusGetTopic
4 | author: Michael Heinrichs
60 | * This value SHALL be set for every account creation.
61 | * This value SHALL NOT be set if no account is created.
62 | */
63 | proto.AccountID created_account_id = 1;
64 | }
65 |
66 | /**
67 | * Block Stream data for a `cryptoDelete` transaction.
68 | *
69 | * This message SHALL NOT duplicate information already contained in
70 | * the original transaction.
71 | */
72 | message DeleteAccountOutput {}
73 |
74 | /**
75 | * Block Stream data for a `cryptoTransfer` transaction.
76 | *
77 | * This message SHALL NOT duplicate information already contained in
78 | * the original transaction.
79 | */
80 | message CryptoTransferOutput { }
81 |
82 | /**
83 | * Block Stream data for a `updateAccount` transaction.
84 | *
85 | * This message SHALL NOT duplicate information already contained in
86 | * the original transaction.
87 | */
88 | message UpdateAccountOutput {}
89 |
--------------------------------------------------------------------------------
/HIP/hip-1021.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 1021
3 | title: Improve Assignment of Auto-Renew Account ID for Topics
4 | author: Michael Kantor (@kantorcodes)
5 | type: Standards Track
6 | category: Service
7 | status: Final
8 | release: v0.60.0
9 | last-call-date-time: 2024-12-18T07:00:00Z
10 | created: 2024-08-01
11 | requested-by: TierBot
12 | discussions-to: https://github.com/hiero-ledger/hiero-improvement-proposals/pull/1021
13 | needs-council-approval: Yes
14 | updated: 2024-05-20
15 | ---
16 |
17 | ## Abstract
18 |
19 | This HIP proposes a modification to the Hedera Consensus Service (HCS) to:
20 | - Enable setting the `autoRenewAccountId` when creating a `TopicCreateTransaction` even if an Admin Key is not present during Topic Creation.
21 |
22 |
23 | ## Motivation
24 |
25 | Currently, when a Topic ID is created, the `autoRenewAccountId` is not automatically set to the account that initiated the transaction. Additionally:
26 |
27 | - It is only possible to set this field when an Admin Key is generated with the Topic. For topics that are created with the intention of being more "immutable," this is a risk.
28 | - Up until HIP-874 (https://github.com/hiero-ledger/hiero-improvement-proposals/pull/883/files), it was not easy to verify if a Topic was successfully created with an Autorenew Account Id, leading to more unexpected errors for users.
29 |
30 | This proposal seeks to simplify the process for users by making the auto-renewal mechanism seamless, eliminating the need for Admin Keys to be present when setting the `autoRenewAccountId`.
31 |
32 | ## Rationale
33 |
34 | The proposed change enables expected user interactions with HCS and ensures consistency in managing topic renewals.
35 |
36 | ## Specification
37 |
38 | ### Automatic Setting of autoRenewAccountId in SDKs
39 |
40 | When a new Topic ID is created, the `autoRenewAccountId` shall be automatically set in the SDKs to the account ID that creates the transaction, providing additional flexibility for when an Admin Key is not set.
41 |
42 | ### Backwards Compatibility
43 |
44 | This feature has no issues with backwards compatibility.
45 |
46 | ### Transaction Changes
47 |
48 | The current implementation allows for the `autoRenewAccountId` to be specified during topic creation only when an Admin Key is present. This proposal does not remove this capability, but in the SDKs, adds an automatic default to the transaction creator's account if not explicitly set, and the capability to set an `autoRenewAccountId` even when Admin Key is not present during creation.
49 |
50 | ## Backwards Compatibility
51 |
52 | This feature has no issues with backwards compatibility.
53 |
54 | ## Implementation
55 |
56 | The Hedera node software will be updated to support assignment of the `autoRenewAccountId` during the topic creation process even if an Admin Key is not present.
57 |
58 | ## Drawbacks
59 |
60 | There should be no drawbacks to this approach. Only furture topic ids will be allowed to set `autoRenewAccountId` without needing to also set the Admin Key.
61 |
62 | ## Alternatives
63 |
64 | - **Future Rent Logic Adjustments:** If rent is enabled for TopicId Entities and a Topic Id was created before this HIP, rent would be charged to the `payer_account_id` of the Topic Id when an Autorenew Account Id was not present.
65 |
66 |
--------------------------------------------------------------------------------
/HIP/hip-198.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 198
3 | title: Ledger ID
4 | author: Leemon Baird (@lbaird)
5 | type: Informational
6 | needs-council-approval: Yes
7 | status: Accepted
8 | last-call-date-time: 2021-11-22 07:00:00 UTC
9 | created: 2021-11-05
10 | discussions-to: https://github.com/hiero-ledger/hiero-improvement-proposals/discussions/201
11 | ---
12 |
13 | ## Abstract
14 | This HIP defines a ledger ID that uniquely identifies a particular DLT (Distributed Ledger Technology) network, and maintains a list of ledger IDs for several Hedera ledgers. This will be updated when those IDs change.
15 |
16 | ## Motivation
17 | It is useful to have a cryptographically-secure means to uniquely identify a ledger. This can be used in state proofs that a ledger contains a certain piece of information, such as a given balance for a given account as of a certain date. This ledger ID is not intended to be human readable, but to be machine readable and suitable for cryptographic proofs. For human-readable names for ledgers, see HIP-30.
18 | It is also important to maintain an updated list of such IDs. For the Hedera mainnet, there is currently only a temporary, non-secure ID. It will be replaced with a permanent ID in the new future. When that happens, the new ID will be listed here.
19 |
20 | ## Rationale
21 |
22 | ## Specification
23 | A `ledger ID` is a sequence of 1 or more bytes (255 max), uniquely identifying a single public or private ledger, in a form suitable as a basis for a cryptographic state proof. The following are the current IDs, which are temporary, only a single byte each, and not secure. They will be updated with longer, more secure IDs in the near future. Any software that is written to use ledger IDs should be designed so that it can be updated when the temporary IDs are replaced with permanent IDs.
24 | ```
25 | 0x00 Hedera mainnet
26 | 0x01 Hedera stable testnet
27 | 0x02 Hedera preview net
28 | ```
29 |
30 | ## Backwards Compatibility
31 | All of HIP-15 and HIP-33 and HAPI use the ledger ID. They will use the above byte strings as the values. Software using those ledger IDs will need to change when the above byte strings are changed from their temporary values to their permanent values.
32 |
33 | ## Security Implications
34 | The temporary ledger IDs are not cryptographically secure, but are helpful for avoiding accidental mistakes. When they are replaced with the permanent IDs, they can be used for secure state proofs, and other cryptographically-secure uses.
35 |
36 | ## How to Teach This
37 | Other HIPs and standards should not include copies of the temporary ledger IDs. They should, instead, reference this HIP. Once the temporary IDs are replaced with the permanent IDs, then other standards can start to simply copy them.
38 |
39 | ## Reference Implementation
40 |
41 | ## Rejected Ideas
42 |
43 | ## Open Issues
44 |
45 | ## References
46 | [HIP-15](https://github.com/hiero-ledger/hiero-improvement-proposals/blob/main/HIP/hip-15.md)
47 | [HIP-30](https://github.com/hiero-ledger/hiero-improvement-proposals/blob/main/HIP/hip-30.md)
48 | [HIP-33](https://github.com/hiero-ledger/hiero-improvement-proposals/blob/main/HIP/hip-33.md)
49 |
50 | ## Copyright/license
51 | This document is licensed under the Apache License, Version 2.0 -- see [LICENSE](../LICENSE) or (https://www.apache.org/licenses/LICENSE-2.0)
52 |
--------------------------------------------------------------------------------
/HIP/hip-20.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 20
3 | title: Standardized URI scheme to reference Hedera data
4 | author: Khoa Luong
53 | * This list SHALL include zero or one self parents.
65 | * This bit SHALL be the middle bit of the node's signature on the hash
66 | * of the event.
80 | * The event referenced SHALL NOT be within the containing block.
81 | */
82 | proto.EventDescriptor descriptor = 1;
83 |
84 | /**
85 | * The index of the parent event.
86 | *
87 | * An `EventHeader`'s index SHALL be the count of preceding `EventHeader`
88 | * and `RoundHeader` block items starting from the beginning of
89 | * the block.
60 | * This value MUST be exactly `1` more than the previous block.
72 | * This SHALL be a timestamp for the block, determined as follows:
93 | * This SHOULD always be `SHA2_384`, currently.
94 | */
95 | proto.BlockHashAlgorithm hash_algorithm = 5;
96 | }
97 |
--------------------------------------------------------------------------------
/assets/hip-1056/protobuf/stream/record_file_item.proto:
--------------------------------------------------------------------------------
1 | /**
2 | * # Record File Block
3 | * This block carries the data from "record stream" and "sidecar"
4 | * files that preceded the block stream. Record blocks are full blocks,
5 | * not block items, but do not have a block header or block proof.
6 | *
7 | * ### Keywords
8 | * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
9 | * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
10 | * document are to be interpreted as described in
11 | * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
12 | * [RFC8174](https://www.ietf.org/rfc/rfc8174).
13 | */
14 | syntax = "proto3";
15 |
16 | package com.hedera.hapi.block.stream;
17 |
18 | // SPDX-License-Identifier: Apache-2.0
19 |
20 | option java_package = "com.hedera.hapi.block.stream.protoc";
21 | // <<
31 | * Any request for a block with lower number than this value SHALL fail
32 | * with a status value indicating and invalid start block number.
33 | */
34 | uint64 first_available_block = 1;
35 |
36 | /**
37 | * The greatest block number available from this Block-Node.
38 | *
39 | * Any request for a block with a block number higher than this
40 | * value MAY fail.
41 | */
42 | uint64 last_available_block = 2;
43 |
44 | /**
45 | * A flag indicating this Block-Node only offers the latest state snapshot.
46 | *
47 | * If this value is `true` the client MUST set `retrieve_latest` `true`
48 | * in any `StateSnapshotRequest` sent to this Block-Node.
49 | */
50 | bool only_latest_state = 3;
51 |
52 | /**
53 | * Version information.
75 | * This version SHALL be specific to each "network" of interconnected
76 | * Block-Nodes.
77 | */
78 | proto.SemanticVersion address_book_version = 1;
79 |
80 | /**
81 | * A version of the Block Stream specification.
84 | * Implementations SHOULD make reasonable effort to ensure the latest
85 | * released Block Stream version is supported.
96 | * This value is implementation-defined.
97 | */
98 | proto.SemanticVersion software_version = 3;
99 | }
100 |
101 | /**
102 | * Remote procedure calls (RPCs) for the Block-Node ancillary services.
103 | */
104 | service BlockNodeService {
105 | /**
106 | * Read the status of this Block-Node.
107 | *
108 | * A client SHOULD request server status prior to requesting block stream
109 | * data or a state snapshot.
110 | */
111 | rpc serverStatus(ServerStatusRequest) returns (ServerStatusResponse);
112 | }
113 |
--------------------------------------------------------------------------------
/_includes/toc.html:
--------------------------------------------------------------------------------
1 | {% capture tocWorkspace %}
2 | {% comment %}
3 | Version 1.0.10
4 | https://github.com/allejo/jekyll-toc
5 |
6 | "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
7 |
8 | Usage:
9 | {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
10 |
11 | Parameters:
12 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
13 |
14 | Optional Parameters:
15 | * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
16 | * class (string) : '' - a CSS class assigned to the TOC
17 | * id (string) : '' - an ID to assigned to the TOC
18 | * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
19 | * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
20 | * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
21 | * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
22 | * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
23 | * anchor_class (string) : '' - add custom class(es) for each anchor element
24 |
25 | Output:
26 | An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
27 | generate the table of contents and will NOT output the markdown given to it
28 | {% endcomment %}
29 |
30 | {% capture my_toc %}{% endcapture %}
31 | {% assign orderedList = include.ordered | default: false %}
32 | {% assign minHeader = include.h_min | default: 1 %}
33 | {% assign maxHeader = include.h_max | default: 6 %}
34 | {% assign nodes = include.html | split: '
26 | * This SHALL be the last block number present in the snapshot
27 | * returned.
38 | * This value MAY be set `true` to request the most recent state snapshot
39 | * available.
79 | * This code SHALL indicate a successful call, or the detailed
80 | * reason for failure.
81 | */
82 | Code status = 1;
83 |
84 | /**
85 | * A block number.
86 | *
87 | * This SHALL be the number of the last block included in this
88 | * state snapshot.
89 | */
90 | uint64 last_block_number = 2;
91 |
92 | /**
93 | * A reference to where the requested state snapshot may be obtained.
94 | *
95 | *
113 | * The request SHALL describe the last block number present in the
114 | * snapshot.
23 | * The requested block MUST exist on the block node.
34 | * This value SHOULD be set `true`, instead of setting `block_number`
35 | * if the intent is to request the latest block available.
36 | */
37 | bool retrieve_latest = 2;
38 | }
39 | }
40 |
41 | /**
42 | * A response to a `singleBlock` request.
43 | *
44 | * This message SHALL be sent in response to a request, and SHALL contain at
45 | * least a valid `status`.
75 | * The client MAY retry the request after correcting the form and
76 | * structure.
77 | */
78 | INVALID_REQUEST = 2;
79 |
80 | /**
81 | * The requested block was not found.
100 | * The reported status SHALL reflect the success of the request, or
101 | * a detailed reason the request failed.
102 | */
103 | Code status = 1;
104 |
105 | /**
106 | * The requested block.
107 | *
108 | * This container object SHALL hold the entire sequence of block items
109 | * for the requested block.
125 | * The request SHALL describe the block number of the block to retrieve.
126 | */
127 | rpc getBlock(BlockRequest) returns (BlockResponse);
128 | }
129 |
--------------------------------------------------------------------------------
/HIP/hip-945.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 945
3 | title: Improvements to Hedera DID Method
4 | author: Keith Kowal
56 | * If the status of the transaction is `SUCCESS`, this value SHALL be
57 | * set to the identifier of the schedule that was created. If the
58 | * transaction status is `IDENTICAL_SCHEDULE_ALREADY_CREATED`, this
59 | * value SHALL be set to the identifier of the existing schedule that
60 | * is identical to the one that was attempted to be created. For any
61 | * other status, this value SHALL NOT be set.
62 | */
63 | proto.ScheduleID schedule_id = 1;
64 |
65 | /**
66 | * A scheduled transaction identifier.
67 | *
68 | * This value SHALL be the transaction identifier for the _scheduled_
69 | * child transaction executed as a result of gathering sufficient
70 | * signatures to complete the schedule.
98 | * This value SHALL be the transaction identifier for the _scheduled_
99 | * child transaction executed as a result of gathering sufficient
100 | * signatures to complete the schedule.
48 | * Note that the transaction only permits a non-negative range, the
49 | * output SHALL always be a whole number.
50 | */
51 | uint32 prng_number = 2;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/MAINTAINERS.md:
--------------------------------------------------------------------------------
1 | # Maintainers
2 |
3 | The general handling of Maintainer rights and all groups in this GitHub org is done in the https://github.com/hiero-ledger/governance repository.
4 |
5 | ## Maintainer Scopes, GitHub Roles and GitHub Teams
6 |
7 | Maintainers are assigned the following scopes in this repository:
8 |
9 | | Scope | Definition | GitHub Role | GitHub Team |
10 | |---------------------|-----------------------------------|-------------|--------------------------------------------|
11 | | project-maintainers | The Maintainers of the project | Maintain | `hiero-improvement-proposals-maintainers` |
12 | | tsc | The Hiero TSC | Maintain | `tsc` |
13 | | github-maintainers | The Maintainers of the github org | Maintain | `github-maintainers` |
14 |
15 | ## Active Maintainers
16 |
17 |
18 |
19 | | Name | GitHub ID | Scope | LFID | Discord ID | Email | Company Affiliation |
20 | |---------------- | -------------- | ---------- | ---- | ----------------- | ----- | ------------------- |
21 | | Serg Metelin | sergmetelin | Maintainer | | | | Hashgraph |
22 | | Michael Garber | mgarbs | Maintainer | | michael_garber_87 | | Hashgraph |
23 | | Raphael Messian | RaphaelMessian | Maintainer | | | | Hashgraph |
24 |
25 |
26 | ## Emeritus Maintainers
27 |
28 | | Name | GitHub ID | Scope | LFID | Discord ID | Email | Company Affiliation |
29 | |----- | --------- | ----- | ---- | ---------- | ----- | ------------------- |
30 | | | | | | | | |
31 |
32 | ## The Duties of a Maintainer
33 |
34 | Maintainers are expected to perform duties in alignment with **[Hiero-Ledger's defined maintainer guidelines](https://github.com/hiero-ledger/governance/blob/main/roles-and-groups.md#maintainers).**
35 |
--------------------------------------------------------------------------------
/HIP/hip-372.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 372
3 | title: Entity Auto-Renewals and Expiry Window
4 | author: Leemon Baird (@lbaird), Nosh Mody (@noshmody), Quan Nguyen (@qnswirlds)
5 | type: Standards Track
6 | category: Service
7 | needs-council-approval: Yes
8 | status: Final
9 | last-call-date-time: 2022-03-21T07:00:00Z
10 | created: 2022-03-01
11 | discussions-to: https://github.com/hiero-ledger/hiero-improvement-proposals/discussions/382
12 | replaces: 16
13 | updated: 2023-01-20
14 | ---
15 |
16 | ## Abstract
17 |
18 | Slight modifications of the auto-renewal duration window compared to the original HIP-16.
19 |
20 | ## Motivation
21 |
22 | The original HIP-16 mentions the auto renewal duration between ~81 days and ~92 days. The rationale was to provide a wider window for the auto-renew duration periodfor better flexibility.
23 |
24 | ## Rationale
25 |
26 | Refer to HIP-16.
27 |
28 | ## User stories
29 |
30 | Refer to HIP-16.
31 |
32 | ## Specification
33 |
34 | The minimum auto-renew period will be equal to ~30 days (2,592,000 seconds), and the max auto-renew durtaion will remain equal to ~92 days (8,000,001 seconds).
35 |
36 | ## Backwards Compatibility
37 |
38 | This feature is not enabled on the Mainnet and should therefore be backwards compatible.
39 |
40 | ## Security Implications
41 |
42 | N/A
43 |
44 | ## How to Teach This
45 |
46 | Implementation of this feature will be referenced in release notes, supported by SDKs, as well as supported at docs.hedera.com.
47 |
48 |
49 | ## Reference Implementation
50 |
51 | The reference implementation change from the original HIP-16 is modifying `ledger.autoRenewPeriod.minDuration` from ~81 days to 30 days.
52 |
53 | ```
54 | ledger.autoRenewPeriod.maxDuration=8000001 seconds // ~92 days
55 | ledger.autoRenewPeriod.minDuration=2592000 seconds // ~30 days
56 | ```
57 |
58 |
59 | ## Rejected Ideas
60 |
61 | N/A
62 |
63 | ## Open Issues
64 |
65 | N/A
66 |
67 | ## References
68 |
69 | HIP-16: https://hips.hedera.com/hip/hip-16
70 |
71 | ## Copyright/license
72 |
73 | This document is licensed under the Apache License, Version 2.0 -- see [LICENSE](../LICENSE) or (https://www.apache.org/licenses/LICENSE-2.0)
74 |
--------------------------------------------------------------------------------
/assets/hip-15/HIP-15-mathematica.nb.txt:
--------------------------------------------------------------------------------
1 | (* (c) 2020-2021 Hedera Hashgraph,released under Apache 2.0 license.*)
2 |
3 | (* find the HIP-15 checksum for a given Hedera address and ledger ID *)
4 |
5 | checksum[ledgerId_, address_] :=
6 | Module[{h, d, p3, p5, s0, s1, s, sh, c, cp},
7 | h = Join[ledgerId, {0, 0, 0, 0, 0, 0}];
8 | d = (ToCharacterCode[address] //. {46 -> 10 + 48}) - 48; (* "." is 46, "0" is 48 *)
9 | p3 = 26^3;
10 | p5 = 26^5;
11 | sd0 = Mod[Total[d[[1 ;; Length[d] ;; 2]]], 11];
12 | sd1 = Mod[Total[d[[2 ;; Length[d] ;; 2]]], 11];
13 | sd = Fold[Mod[#1*31 + #2, p3] &, d];
14 | sh = Fold[Mod[#1*31 + #2, p5] &, h];
15 | c = Mod[((Mod[Length[d], 5]*11 + sd0)*11 + sd1)*p3 + sd + sh, p5];
16 | cp = Mod[c*1000003, p5];
17 | StringJoin @@
18 | FromCharacterCode[(IntegerDigits[cp, 26, 5] +
19 | ToCharacterCode["a"][[1]])]];
20 |
21 | (* Output the given ledger ID and address along with the calculated \
22 | checksum *)
23 |
24 | output[ledgerId_, address_] :=
25 | Print["ledger: ", ledgerId, " address: ", address, "-",
26 | checksum[ledgerId, address]];
27 |
28 | (* Output checksums for all the examples given in HIP-15 *)
29 |
30 | addresses = {"0.0.1", "0.0.4", "0.0.5", "0.0.6", "0.0.12", "0.0.123",
31 | "0.0.1234567890", "12.345.6789", "1.23.456"};
32 | output[{0}, #] & /@ addresses;
33 | output[{161, 255, 1}, #] & /@ addresses;
34 |
35 | (*
36 | OUTPUT:
37 | ledger:{0} address:0.0.1-dfkxr
38 | ledger:{0} address:0.0.4-cjcuq
39 | ledger:{0} address:0.0.5-ktach
40 | ledger:{0} address:0.0.6-tcxjy
41 | ledger:{0} address:0.0.12-uuuup
42 | ledger:{0} address:0.0.123-vfmkw
43 | ledger:{0} address:0.0.1234567890-zbhlt
44 | ledger:{0} address:12.345.6789-aoyyt
45 | ledger:{0} address:1.23.456-adpbr
46 | ledger:{161,255,1} address:0.0.1-xzlgq
47 | ledger:{161,255,1} address:0.0.4-xdddp
48 | ledger:{161,255,1} address:0.0.5-fnalg
49 | ledger:{161,255,1} address:0.0.6-nwxsx
50 | ledger:{161,255,1} address:0.0.12-povdo
51 | ledger:{161,255,1} address:0.0.123-pzmtv
52 | ledger:{161,255,1} address:0.0.1234567890-tvhus
53 | ledger:{161,255,1} address:12.345.6789-vizhs
54 | ledger:{161,255,1} address:1.23.456-uxpkq
55 | *)
56 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # Welcome to Jekyll!
2 | #
3 | # This config file is meant for settings that affect your whole blog, values
4 | # which you are expected to set up once and rarely edit after that. If you find
5 | # yourself editing this file very often, consider using Jekyll's data files
6 | # feature for the data you need to update frequently.
7 | #
8 | # For technical reasons, this file is *NOT* reloaded automatically when you use
9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10 |
11 | # Site settings
12 | # These are used to personalize your new site. If you look in the HTML files,
13 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
14 | # You can create any custom variable you would like, and they will be accessible
15 | # in the templates via {{ site.myvariable }}.
16 | title: Hiero Improvement Proposals
17 | description: >- # this means to ignore newlines until "baseurl:"
18 | HIP stands for Hiero Improvement Proposal”. These improvement proposals can range from core protocol changes, to the applications, frameworks, and protocols built on top of the Hiero public network and used by the community.
19 | baseurl: "" # the subpath of your site, e.g. /blog
20 | url: "" # the base hostname & protocol for your site, e.g. http://example.com
21 | twitter_username: hedera
22 | github_username: hiero-ledger
23 |
24 | # Order for displaying HIP statuses
25 | hip_status_order:
26 | - Last Call
27 | - Draft
28 | - Approved
29 | - Accepted
30 | - Final
31 | - Active
32 | - Review
33 | - Stagnant
34 | - Deferred
35 | - Withdrawn
36 | - Rejected
37 | - Replaced
38 |
39 | # Build settings
40 | markdown: kramdown
41 | theme: minima
42 |
43 | defaults:
44 | -
45 | scope:
46 | path: "HIP"
47 | values:
48 | layout: "hip"
49 |
50 | include:
51 | - _data
52 |
53 | # Exclude from processing.
54 | # The following items will not be processed, by default. Create a custom list
55 | # to override the default setting.
56 | exclude:
57 | - Gemfile
58 | - Gemfile.lock
59 | - node_modules
60 | - vendor/bundle/
61 | - vendor/cache/
62 | - vendor/gems/
63 | - vendor/ruby/
64 | - hip-0000-template.md
65 | - .gitignore
66 | - CODE_OF_CONDUCT.md
67 | - LICENSE
68 | - README.md
69 |
--------------------------------------------------------------------------------
/assets/hip-1056/protobuf/stream/block.proto:
--------------------------------------------------------------------------------
1 | /**
2 | * # Block Stream
3 | * The base element of the block stream _at rest_.
4 | * A `Block` contains a record of all transactions, results, and outputs for
5 | * a block in the chain. Each `Block` also contains a state proof for
6 | * validation and a header with version and algorithm information.
7 | *
8 | * Block entries are not designed for streaming, but for storing blocks in
9 | * persistent storage, verifying block stream data, and as query responses
10 | * when a block is requested from a block node.
11 | *
12 | * ### Keywords
13 | * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
14 | * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
15 | * document are to be interpreted as described in
16 | * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
17 | * [RFC8174](https://www.ietf.org/rfc/rfc8174).
18 | */
19 | syntax = "proto3";
20 |
21 | package com.hedera.hapi.block.stream;
22 |
23 | // SPDX-License-Identifier: Apache-2.0
24 |
25 | option java_package = "com.hedera.hapi.block.stream.protoc";
26 | // <<
36 | * The primary mechanism for transmitting block stream data SHALL be to
37 | * stream individual block items to the block node(s).
38 | * The only delimiter between blocks when streamed SHALL be the `BlockHeader`
39 | * item and `BlockProof` item.
40 | *
41 | * This block SHALL be verifiable as correct using only data in the block,
42 | * including the `BlockProof`, and public keys for the consensus nodes.
43 | */
44 | message Block {
45 | /**
46 | * A list of items that, together, make up this block.
47 | *
49 | * This list SHALL end with a `BlockProof`.
50 | * Items in this list SHALL be in exactly the same order produced by
51 | * consensus.
52 | * Items in this list MAY be filtered, if so requested.
53 | * If this list is filtered, removed items SHALL be replaced with
54 | * `FilteredBlockItem` entries.
55 | */
56 | repeated BlockItem items = 1;
57 | }
58 |
--------------------------------------------------------------------------------
/assets/hip-1056/protobuf/services/contract_types.proto:
--------------------------------------------------------------------------------
1 | /**
2 | * # Contract Message Types
3 | * Message types used in contract transactions.
4 | *
5 | * ### Keywords
6 | * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
7 | * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
8 | * document are to be interpreted as described in
9 | * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
10 | * [RFC8174](https://www.ietf.org/rfc/rfc8174).
11 | */
12 | syntax = "proto3";
13 |
14 | package proto;
15 |
16 | // SPDX-License-Identifier: Apache-2.0
17 | option java_package = "com.hederahashgraph.api.proto.java";
18 | // <<
26 | * This message does not say anything about whether an EVM transaction is itself a logical
27 | * transaction in a Hiero transactional unit. It simply provides context on an internal
28 | * message call within an EVM transaction.
29 | */
30 | message InternalCallContext {
31 | /**
32 | * The gas available for the call.
33 | */
34 | uint64 gas = 1;
35 |
36 | /**
37 | * The value sent with the call.
38 | */
39 | uint64 value = 2;
40 |
41 | /**
42 | * The call data for the call.
43 | */
44 | bytes call_data = 3;
45 | }
46 |
47 | /**
48 | * Results of executing a EVM transaction.
49 | */
50 | message EvmTransactionResult {
51 | /**
52 | * The Hedera id of the caller.
53 | */
54 | AccountID sender_id = 1;
55 |
56 | /**
57 | * The Hedera id of the contract receiving the call.
58 | */
59 | ContractID contract_id = 2;
60 |
61 | /**
62 | * Result data from the function call.
63 | */
64 | bytes result_data = 3;
65 |
66 | /**
67 | * Any error message produced by the contract call. Max size of 100 bytes.
68 | *
54 | * This is the account identifier for the account created as part of
55 | * any transaction that creates a new account.
56 | * This value is necessary due to the difficulty of otherwise identifying
57 | * created accounts versus the other account updates necessary for every
58 | * transaction (e.g. fee payment).
59 | *
29 | * This message provides information about an event and its parents within a
30 | * block.
31 | *
32 | * An `EventHeader` message that contains only `EventDescriptors` for parents
33 | * can be combined with its following `EventTransaction` messages to create
34 | * a `GossipEvent` message.
35 | * The created `GossipEvent` message can be hashed to create the
36 | * `EventDescriptor` for that event.
37 | * An `EventHeader` that contains indices to parent events within the containing
38 | * block will need to have each parent index replaced by the `EventDescriptor`
39 | * of that parent before it can be translated into a `GossipEvent` message.
40 | */
41 | message EventHeader {
42 | /**
43 | * An event core value.
44 | * This provides information about the event, including its creator.
45 | */
46 | com.hedera.hapi.platform.event.EventCore event_core = 1;
47 |
48 | /**
49 | * A list of references to parent events.
50 | * Each entry can be an `EventDescriptor` or an index to an event
51 | * within the block. These items represent the parents of this event.
52 | *
54 | * This list SHALL include zero or more other parents.
55 | * The first element of the list SHALL be the self parent,
56 | * if one exists.
57 | * The list of parents SHALL NOT include more than one parent from the same
58 | * creator.
59 | */
60 | repeated ParentEventReference parents = 2;
61 |
62 | /**
63 | * The middle bit of the node's signature on the event.
64 | *
67 | */
68 | bool signature_middle_bit = 3;
69 | }
70 |
71 | /*
72 | * A reference to a parent event.
73 | */
74 | message ParentEventReference {
75 |
76 | oneof parent {
77 | /**
78 | * The EventDescriptor of the parent event.
79 | *
90 | * The index SHALL be zero-based.
91 | */
92 | uint32 index = 2;
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/HIP/hip-782.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 782
3 | title: Smoothing Staking Rewards
4 | author: Leemon Baird
30 | * The block header SHALL provide the base minimum information needed to
31 | * correctly interpret and process that block, or stop processing
32 | * if appropriate.
33 | * The block header MUST describe, at minimum, the following items.
34 | * - The version of the block stream data
35 | * - The block number
36 | * - The hash of the previous block
37 | * - The hash algorithm used to generate the block hash
38 | *
39 | * All fields of this message are REQUIRED, with the exception that
40 | * `hash_algorithm` MAY be _transmitted_ as a default value to improve
41 | * data efficiency.
42 | */
43 | message BlockHeader {
44 | /**
45 | * A version of the HAPI specification.
46 | * This is the API version that was used to serialize the block.
47 | */
48 | proto.SemanticVersion hapi_proto_version = 1;
49 |
50 | /**
51 | * A version of the consensus node software.
52 | * This is the software version that executed the transactions
53 | * within this block.
54 | */
55 | proto.SemanticVersion software_version = 2;
56 |
57 | /**
58 | * A block number for this block.
59 | *
61 | * Client systems SHOULD optimistically reject any block with a gap or
62 | * reverse in `number` sequence, and MAY assume the block stream has
63 | * encountered data loss, data corruption, or unauthorized modification.
64 | */
65 | uint64 number = 3;
66 |
67 | /**
68 | * The timestamp for this block.
69 | * The block timestamp is the consensus time stamp of the first round
70 | * in the block.
71 | *
73 | * Given the first round within a block
74 | *
75 | *
87 | */
88 | proto.Timestamp block_timestamp = 4;
89 |
90 | /**
91 | * A hash algorithm used for this block, including the block proof.
92 | *
33 | * This item enables a single format, the Block Stream, to carry both
34 | * historical and current data; eliminating the need to search two sources for
35 | * block and block chain data.
36 | * Any block containing this item requires special handling.
37 | * - The block SHALL have a `BlockHeader`.
38 | * - Some fields in the `BlockHeader` may be interpreted differently, and
39 | * may depend on when the original record file was created.
40 | * - The block SHALL NOT have a `BlockProof`.
41 | * - The block SHALL end with an `AddressBookProof`, which is only used for
42 | * `RecordFileItem` blocks.
43 | * - The block SHALL contain _exactly one_ `RecordFileItem`.
44 | * - The block SHALL NOT contain any content item other than a `RecordFileItem`.
45 | * - The content of the `RecordFileItem` MUST be validated using the
46 | * signature data and content provided herein according to the
47 | * process used for Record Files prior to the creation of Block Stream.
48 | * - This block item only replaces the requirement to read several
49 | * individual files from cloud storage services.
50 | * - The address book relevant to a particular record file SHALL be available
51 | * separately as an `AddressBookProof` item.
52 | */
53 | message RecordFileItem {
54 | /**
55 | * The consensus time the record file was produced for.
56 | * This comes from the record file name.
57 | */
58 | proto.Timestamp creation_time = 1;
59 |
60 | /**
61 | * The contents of a record file.
62 | * The first 4 bytes are a 32bit int little endian version number.
63 | * The versions that existed are 2,3,5 and 6.
64 | */
65 | bytes record_file_contents = 2;
66 |
67 | /**
68 | * The contents of sidecar files for this block.
69 | * Each block can have zero or more sidecar files.
70 | */
71 | repeated proto.SidecarFile sidecar_file_contents = 3;
72 |
73 | /**
74 | * A collection of RSA signatures from consensus nodes.
75 | * These signatures validate the hash of the record_file_contents field.
76 | */
77 | repeated RecordFileSignature record_file_signatures = 4;
78 | }
79 |
80 | /**
81 | * A signature by a node on the SHA384 hash of the record file.
82 | */
83 | message RecordFileSignature {
84 | /**
85 | * A single RSA signature.
86 | * This is the RSA signature of the node on the SHA384 hash of
87 | * the record file
88 | */
89 | bytes signatures_bytes = 1;
90 |
91 | /**
92 | * A unique node identifier.
93 | * This is the node id of the consensus node that created this signature.
94 | */
95 | int32 node_id = 2;
96 | }
97 |
--------------------------------------------------------------------------------
/assets/hip-206/solidity/FeeHelper.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Apache-2.0
2 | pragma solidity >=0.5.0 <0.9.0;
3 | pragma experimental ABIEncoderV2;
4 |
5 | import "./HederaTokenService.sol";
6 | import "./HederaResponseCodes.sol";
7 | import "./IHederaTokenService.sol";
8 | import "./KeyHelper.sol";
9 |
10 | contract FeeHelper is KeyHelper {
11 |
12 | function createFixedHbarFee(
13 | uint32 amount,
14 | address feeCollector
15 | ) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) {
16 | fixedFee.amount = amount;
17 | fixedFee.useHbarsForPayment = true;
18 | fixedFee.feeCollector = feeCollector;
19 | }
20 |
21 | function createFixedTokenFee(
22 | uint32 amount,
23 | address tokenId,
24 | address feeCollector
25 | ) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) {
26 | fixedFee.amount = amount;
27 | fixedFee.tokenId = tokenId;
28 | fixedFee.feeCollector = feeCollector;
29 | }
30 |
31 | function createFixedSelfDenominatedFee(
32 | uint32 amount,
33 | address feeCollector
34 | ) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) {
35 | fixedFee.amount = amount;
36 | fixedFee.useCurrentTokenForPayment = true;
37 | fixedFee.feeCollector = feeCollector;
38 | }
39 |
40 | function createFractionalFee(
41 | uint32 numerator,
42 | uint32 denominator,
43 | bool netOfTransfers,
44 | address feeCollector
45 | ) internal pure returns (IHederaTokenService.FractionalFee memory fractionalFee) {
46 | fractionalFee.numerator = numerator;
47 | fractionalFee.denominator = denominator;
48 | fractionalFee.netOfTransfers = netOfTransfers;
49 | fractionalFee.feeCollector = feeCollector;
50 | }
51 |
52 | function createFractionalFeeWithMinAndMax(
53 | uint32 numerator,
54 | uint32 denominator,
55 | uint32 minimumAmount,
56 | uint32 maximumAmount,
57 | bool netOfTransfers,
58 | address feeCollector
59 | ) internal pure returns (IHederaTokenService.FractionalFee memory fractionalFee) {
60 | fractionalFee.numerator = numerator;
61 | fractionalFee.denominator = denominator;
62 | fractionalFee.minimumAmount = minimumAmount;
63 | fractionalFee.maximumAmount = maximumAmount;
64 | fractionalFee.netOfTransfers = netOfTransfers;
65 | fractionalFee.feeCollector = feeCollector;
66 | }
67 |
68 | function createRoyaltyFeeWithoutFallback(
69 | uint32 numerator,
70 | uint32 denominator,
71 | address feeCollector
72 | ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) {
73 | royaltyFee.numerator = numerator;
74 | royaltyFee.denominator = denominator;
75 | royaltyFee.feeCollector = feeCollector;
76 | }
77 |
78 | function createRoyaltyFeeWithHbarFallbackFee(
79 | uint32 numerator,
80 | uint32 denominator,
81 | uint32 amount,
82 | address feeCollector
83 | ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) {
84 | royaltyFee.numerator = numerator;
85 | royaltyFee.denominator = denominator;
86 | royaltyFee.amount = amount;
87 | royaltyFee.useHbarsForPayment = true;
88 | royaltyFee.feeCollector = feeCollector;
89 | }
90 |
91 | function createRoyaltyFeeWithTokenDenominatedFallbackFee(
92 | uint32 numerator,
93 | uint32 denominator,
94 | uint32 amount,
95 | address tokenId,
96 | address feeCollector
97 | ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) {
98 | royaltyFee.numerator = numerator;
99 | royaltyFee.denominator = denominator;
100 | royaltyFee.amount = amount;
101 | royaltyFee.tokenId = tokenId;
102 | royaltyFee.feeCollector = feeCollector;
103 | }
104 | }
--------------------------------------------------------------------------------
/assets/hip-1081/protobuf/node_service.proto:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Apache-2.0
2 | syntax = "proto3";
3 |
4 | package org.hiero.block.api;
5 |
6 | option java_package = "org.hiero.block.api.protoc";
7 | // <<
23 | * A request for blocks between `first_available_block` and
24 | * `last_available_block`, inclusive, SHOULD succeed. Any request for blocks
25 | * outside that range SHOULD fail.
26 | */
27 | message ServerStatusResponse {
28 | /**
29 | * The lowest numbered block available on this Block-Node.
30 | *
54 | * Versions for the block network address book, block stream protocol
55 | * buffer schema, and Block-Node software.
56 | */
57 | BlockNodeVersions version_information = 4;
58 | }
59 |
60 | /**
61 | * Version information for a Block-Node.
62 | *
63 | * The `stream_proto_version` SHOULD be an officially released Block Stream
64 | * version.
65 | * The `address_book_version` SHALL be determined by networks of Block-Nodes.
66 | * The `software_version` SHALL be determined by the implementation of this
67 | * specification.
68 | */
69 | message BlockNodeVersions {
70 | /**
71 | * A version of the Block-Node network address book.
72 | * The address book version describes what version of address book
73 | * this Block-Node holds for discovering and identifying other Block-Nodes.
74 | *
82 | * This is the Stream version currently supported by this Block-Node.
83 | *
86 | * This version MUST be an officially released Block Stream version if
87 | * the responding Block-Node is not private.
88 | */
89 | proto.SemanticVersion stream_proto_version = 2;
90 |
91 | /**
92 | * A version of the Block-Node software.
93 | * This is the software version that this Block-Node is currently
94 | * running.
95 | *
18 | * This request MAY specify the "latest" snapshot, and the block node SHALL
19 | * respond with a reference to a snapshot containing the most recent contents
20 | * of the network state known to that block node.
21 | */
22 | message StateSnapshotRequest {
23 | /**
24 | * A block number.
25 | *
28 | * If `retrieve_latest` is set `true` this field SHOULD NOT be set
29 | * and SHALL be ignored.
30 | * A block node implementation MAY reject any request with a non-default
31 | * value for this field, but MUST clearly document that behavior.
32 | */
33 | uint64 last_block_number = 1;
34 |
35 | /**
36 | * A boolean to request the latest available snapshot.
37 | *
40 | * If this value is set to `true` then `last_block_number` SHOULD NOT be
41 | * set and SHALL be ignored.
42 | * A block node implementation MAY reject any request with that does _not_
43 | * set this field `true`, but MUST clearly document that behavior.
44 | */
45 | bool retrieve_latest = 2;
46 | }
47 |
48 | /**
49 | * A response to a request for a state snapshot.
50 | *
51 | * This message SHALL deliver a _reference_ to the requested snapshot
52 | * data if successful.
53 | * This message SHALL deliver a code indicating the reason for failure
54 | * if unsuccessful.
55 | */
56 | message StateSnapshotResponse {
57 | /**
58 | * An enumeration indicating the status of a StateSnapshotResponse request.
59 | */
60 | enum Code {
61 | /**
62 | * An "unset value" flag, this value SHALL NOT be used.
63 | * This status indicates the server software failed to set a status,
64 | * and SHALL be considered a software defect.
65 | */
66 | UNKNOWN = 0;
67 |
68 | /**
69 | * The request succeeded.
70 | * The full snapshot data MAY be read via the endpoint provided in the
71 | * `snapshot_reference` field for the duration specified.
72 | */
73 | SUCCESS = 1;
74 | }
75 |
76 | /**
77 | * A status response.
78 | * REVIEW NOTE
101 | */
102 | string snapshot_reference = 3;
103 | }
104 |
105 | /**
106 | * Remote procedure calls (RPCs) for the Block Node state snapshot
107 | * and query services.
108 | */
109 | service StateService {
110 | /**
111 | * Read a state snapshot from the block node.
112 | *
96 | * This is TEMPORARY. We have not yet designed how state snapshots may
97 | * be sent. One idea is to use `Any` and let implementations decide;
98 | * another is to use a time limited URL (with the same login as the block
99 | * node server); another is to use a customer-pays cloud storage bucket.
100 | *
115 | * Block node implementations MAY decline a request for a snapshot older
116 | * than the latest available, but MUST clearly document this behavior.
117 | */
118 | rpc stateSnapshot(StateSnapshotRequest) returns (StateSnapshotResponse);
119 | }
120 |
--------------------------------------------------------------------------------
/HIP/hip-323.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 323
3 | title: C SDK
4 | author: Greg Scullard
24 | * A request MAY specify `uint64_max` to signal that the last possible
25 | * block should be returned (which is subtly different from setting
26 | * `retrieve_latest` instead of setting a `block_number`, though the
27 | * result will always be the same, in most implementations).
28 | */
29 | uint64 block_number = 1;
30 |
31 | /**
32 | * A flag to request the latest available block.
33 | *
46 | * If `status` is `READ_BLOCK_SUCCESS`, the response SHALL contain the
47 | * requested block in the `block` field.
48 | *
49 | * > Note
50 | * >> A block can become quite large. A client MUST be prepared to receive the
51 | * >> full content of the block, perhaps many megabytes of data.
52 | */
53 | message BlockResponse {
54 | /**
55 | * An enumeration indicating the status of this request.
56 | */
57 | enum Code {
58 | /**
59 | * An "unset value" flag, this value SHALL NOT be used.
60 | * This status indicates the server software failed to set a status,
61 | * and SHALL be considered a software defect.
62 | */
63 | UNKNOWN = 0;
64 |
65 | /**
66 | * The request succeeded.
67 | * The requested block SHALL be returned in the `block` field.
68 | */
69 | SUCCESS = 1;
70 |
71 | /**
72 | * The request cannot be fulfilled.
73 | * The client sent a malformed or structurally incorrect request.
74 | *
82 | * Something failed and a block that SHOULD be available was
83 | * not found.
84 | * The client MAY retry the request; if this result is repeated the
85 | * request SHOULD be directed to a different block node server.
86 | */
87 | NOT_FOUND = 3;
88 |
89 | /**
90 | * The requested block is not available on this block node server.
91 | * The client SHOULD send a `serverStatus` request to determine the
92 | * lowest and highest block numbers available at this block node server.
93 | */
94 | NOT_AVAILABLE = 4;
95 | }
96 |
97 | /**
98 | * A response status.
99 | *
110 | * The block items in this message SHALL be in the same order
111 | * as received.
112 | * The items in this message SHALL begin with a `BlockHeader` and end with
113 | * a `BlockStateProof` applicable to this block.
114 | */
115 | com.hedera.hapi.block.stream.Block block = 2;
116 | }
117 |
118 | /**
119 | * Remote procedure calls (RPCs) for the Block Node block services.
120 | */
121 | service BlockAccessService {
122 | /**
123 | * Read a single block from the block node.
124 | *
13 | * That value SHALL be set if, and only if, the transaction resulted in
14 | * _execution_ of the scheduled child transaction.
15 | * Most outputs from this service SHALL NOT set the scheduled transaction
16 | * identifier, because the transaction has not executed yet. Only when the
17 | * schedule has gathered all of the signatures required to execute the
18 | * scheduled child transaction is the network able to execute that child
19 | * transaction, and assign a final transaction identifier.
20 | *
21 | * When a scheduled child transaction is executed, the identifier of the
22 | * schedule that executed that transaction SHALL be included as a
23 | * `schedule_ref` in the _result_ for the _child_ transaction.
24 | * The output of the schedule transaction (create or sign) SHALL NOT contain
25 | * the `schedule_ref`.
26 | *
27 | * ### Keywords
28 | * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
29 | * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
30 | * document are to be interpreted as described in
31 | * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
32 | * [RFC8174](https://www.ietf.org/rfc/rfc8174).
33 | */
34 | syntax = "proto3";
35 |
36 | package com.hedera.hapi.block.stream.output;
37 |
38 | // SPDX-License-Identifier: Apache-2.0
39 |
40 | option java_package = "com.hedera.hapi.block.stream.output.protoc";
41 | // <<
71 | * This value SHALL NOT be set unless the scheduled transaction was
72 | * executed as a child of this schedule create transaction.
73 | * This value SHALL NOT be set unless this schedule create transaction
74 | * was signed by sufficient keys to meet the signature requirements
75 | * for the scheduled child transaction immediately.
76 | */
77 | proto.TransactionID scheduled_transaction_id = 2;
78 | }
79 |
80 | /**
81 | * Block Stream data for a `deleteSchedule` transaction.
82 | *
83 | * This message SHALL NOT duplicate information already contained in
84 | * the original transaction.
85 | */
86 | message DeleteScheduleOutput {}
87 |
88 | /**
89 | * Block Stream data for a `signSchedule` transaction.
90 | *
91 | * This message SHALL NOT duplicate information already contained in
92 | * the original transaction.
93 | */
94 | message SignScheduleOutput {
95 | /**
96 | * A scheduled transaction identifier.
97 | *
101 | * This value SHALL NOT be set unless the scheduled transaction was
102 | * executed as a child of this schedule sign transaction.
103 | * This value SHALL NOT be set unless this schedule sign transaction
104 | * was signed by sufficient additional keys to meet the signature
105 | * requirements for the scheduled child transaction.
106 | */
107 | proto.TransactionID scheduled_transaction_id = 1;
108 | }
109 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | [](https://discord.com/channels/905194001349627914/1289954446712770600)
4 | [](https://hips.hedera.org)
5 | [](https://scorecard.dev/viewer/?uri=github.com/hiero-ledger/hiero-improvement-proposals)
6 | [](https://bestpractices.coreinfrastructure.org/projects/10697)
7 | [](LICENSE)
8 |
9 | ## Submit a HIP
10 | 1. Fork this repository
11 | 1. Fill out this template: [hip template](hip-0000-template.md)
12 | 1. If the proposal contains exceptionally large specification text,
13 | particularly API changes or source code, place those changes
14 | in `assets` and link them as described in the template document.
15 | 1. Create a pull request against hiero-ledger/hiero-improvement-proposals main
16 |
17 |
20 |
21 | See [hip-1](HIP/hip-1.md) for details on the HIP process.
22 |
23 | ## What is a HIP?
24 | HIP stands for "Hiero Improvement Proposal". These improvement proposals can
25 | range from core protocol changes, to the applications, frameworks, and protocols
26 | built on top of the Hiero network and used by the community. The HIP
27 | author is responsible for building consensus within the community and
28 | documenting dissenting opinions, as well as tracking their HIP through
29 | the process outlined below.
30 |
31 | You can see the list of all HIPs on [the official HIPs site](https://hips.hiero.org).
32 |
33 | ## What is Hiero?
34 | [Hiero](https://hiero.org) is an open-source distributed ledger project under
35 | the Linux Foundation Decentralized Trust (LF Decentralized Trust). Hiero builds
36 | upon the [Hashgraph consensus algorithm](http://www.leemon.com/papers/2016b.pdf)
37 | created by [Dr. Leemon Baird](http://www.leemon.com/). The project provides a
38 | fast, fair, and secure environment for distributed ledger technologies. You can
39 | learn more about the Hashgraph Consensus Algorithm by reading the
40 | [hashgraph algorithm whitepaper](http://www.leemon.com/papers/2016b.pdf).
41 |
42 | ## Purpose
43 | The goal of HIPs is to have a place to propose new features, to collect
44 | community thoughts and input on a particular issue, and further to document
45 | all these subject matters in one place. It's a great way to document these
46 | discussions and proposals
47 | [here on GitHub](https://github.com/hiero-ledger/hiero-improvement-proposals),
48 | because any revisions made on these text files will be recorded.
49 |
50 | ## Qualifications
51 | Each HIP should only be one single key proposal and/or idea. The idea should be
52 | focused and only issue to one subject matter to be successful. A HIP must meet
53 | certain minimum criteria: it must be clear and have a complete description of
54 | the proposed enhancement, the enhancement must represent a net improvement,
55 | the proposed implementation, if applicable, must be solid and must not
56 | complicate the protocol unduly.
57 |
58 | ## Before Submitting
59 | 1. Evaluate your idea: consider why you'd like to request changes or
60 | improvements, and how it benefits the Hiero community.
61 | 1. Thoroughly look through those proposals already submitted to ensure there
62 | are no duplicates.
63 | 1. Ask the Hiero community first if your idea is original, or has
64 | already been through the HIP process.
65 | 1. Reevaluate your proposal to ensure sure the idea is applicable
66 | to the entire community and not just to one particular author, application,
67 | project, or protocol.
68 |
69 | ## Local Jekyll Site
70 | Pre-requisites:
71 | - `ruby`: `2.7.8p225`
72 | - `gem`: `3.4.10`
73 | - `bundler`: `1.17.3`
74 | You can run a local version of the HIPs dashboard site:
75 | ```shell
76 | bundle install
77 | bundle exec jekyll serve --livereload
78 | ```
79 | The site will be available on `http://localhost:4000`.
80 |
81 | You can read more about Jekyll on its official [website](https://jekyllrb.com/)
82 |
83 | ##### Note
84 | An excellent place to discuss your proposal and get feedback is in the
85 | [issues section of this repository](https://github.com/hiero-ledger/hiero-improvement-proposals/issues),
86 | or on [LFDT's Discord Server](https://discord.com/channels/905194001349627914/1289954446712770600);
87 | there you can start formalizing the language around your HIP and ensuring it has broad
88 | community support.
89 |
90 | ## Disclaimer(s):
91 | These proposals and discussions have no effect regarding private (permissioned)
92 | implementations of the Hashgraph consensus algorithm; additionally, this
93 | repository and its contents are maintained by the Hiero community under the
94 | governance of the Linux Foundation Decentralized Trust.
95 |
--------------------------------------------------------------------------------
/HIP/hip-227.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 227
3 | title: Mirror Node Search Contract Execution Log REST API
4 | author: Nana Essilfie-Conduah (@Nana-EC)
5 | type: Standards Track
6 | category: Mirror
7 | needs-council-approval: Yes
8 | discussions-to: https://github.com/hiero-ledger/hiero-improvement-proposals/discussions/264
9 | status: Final
10 | last-call-date-time: 2021-12-20T07:00:00Z
11 | release: v0.47.0
12 | created: 2021-11-18
13 | updated: 2023-02-01
14 | ---
15 |
16 | ## Abstract
17 |
18 | An additional Mirror Node REST API endpoint is described which would allow users to search across topics for a particular contracts execution results.
19 |
20 | ## Motivation
21 |
22 | The current Mirror Node supports the ingestion of contract information and contract executions results and logs.
23 | It supports the retrieval of top level contract information, however, it does not support the filtering of contract execution result logs.
24 | When methods in a contract are run users currently have to rely on network calls and transaction success or failure to determine execution details.
25 | Retrieving filtered transaction logs is common practice in the EVM space and the Mirror Node should provide endpoints on its existing API to support new and existing users.
26 |
27 | ## Rationale
28 |
29 | The proposal seeks to expand Mirror Node Smart Contract Service 2.0 support by exposing contract execution result logs filtering as is standard in many full archive nodes.
30 | This new endpoint would provide insight into function execution logs.
31 |
32 | ## User stories
33 |
34 | As a user, I want to filter through and view the results of a smart contracts method execution
35 |
36 | ## Specification
37 |
38 | A new endpoint `/api/v1/contracts/{id}/results/logs` will be added to supports users filtering contract execution result logs.
39 |
40 | The following JSON represents a typical response result from either of these calls
41 | ```json
42 | {
43 | "logs": [
44 | {
45 | "address": "0x0000000000000000000000000000000000001234",
46 | "bloom": "0x1513001083c899b1996ec7fa33621e2c340203f0",
47 | "contract_id": "0.0.1002",
48 | "data": "0x8f705727c88764031b98fc32c314f8f9e463fb62",
49 | "index": 0,
50 | "root_contract_id": null,
51 | "timestamp": "12345.10002",
52 | "topics": [
53 | "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
54 | "0x59d088293f09d5119d5b55858b989ffce4d398dc"
55 | ]
56 | },
57 | {
58 | "address": "0x0000000000000000000000000000000000001893",
59 | "bloom": "0x8f705727c88764031b98fc32c314f8f9e463fb62",
60 | "contract_id": "0.0.1003",
61 | "data": "0x1513001083c899b1996ec7fa33621e2c340203f0",
62 | "index": 1,
63 | "root_contract_id": "0.0.1002",
64 | "timestamp": "12345.10002",
65 | "topics": [
66 | "af846d22986843e3d25981b94ce181adc556b334ccfdd8225762d7f709841df0",
67 | "0000000000000000000000000000000000000000000000000000000000000765"
68 | ]
69 | }
70 | ]
71 | }
72 | ```
73 |
74 | Optional filters
75 |
76 | - `index`: The unique log index within a particular contract result. Starts at zero and increases.
77 | - `limit`: The maximimum number of items to return in response.
78 | - `order`: The order in which items are listed - asc or desc (default). Sort fields are `timestamp` then `index`.
79 | - `timestamp`: The consensus timestamp in `seconds.nanoseconds` format. Required when a topic is specified and should not span a time range of more than seven days. Supports optional comparison operators `gt`, `gte`, `lt`, `lte`, or `eq`.
80 | - `topic0`: The first topic associated with a contract log. Topic should be hex encoded with `0x` characters optional.
81 | - `topic1`: The second topic associated with a contract log. Topic should be hex encoded with `0x` characters optional.
82 | - `topic2`: The third topic associated with a contract log. Topic should be hex encoded with `0x` characters optional.
83 | - `topic3`: The fourth topic associated with a contract log. Topic should be hex encoded with `0x` characters optional.
84 |
85 | > **_NOTE:_** Paging will not be supported if number of logs exceed the page size (default 25), optional parameters will need to be adjusted by callers in this case.
86 |
87 | ## Backwards Compatibility
88 |
89 | This additional API endpoint does not alter exsiting REST API functionality.
90 |
91 | ## How to Teach This
92 |
93 | - Hedera Mirror Node design document
94 | - Description and code examples of queries added to Hedera REST API documentation section
95 | - The OpenAPI spec at `api/v1/docs` should be updated to reflect the new endpoints and allow users to test out the calls.
96 | - Reviewed in Engineering Insights
97 |
98 |
99 | ## References
100 |
101 | - https://github.com/hashgraph/hedera-protobufs/blob/main/services/contract_call_local.proto
102 |
103 | ## Copyright/license
104 |
105 | This document is licensed under the Apache License, Version 2.0 -- see [LICENSE](../LICENSE) or (https://www.apache.org/licenses/LICENSE-2.0)
106 |
--------------------------------------------------------------------------------
/HIP/hip-844.md:
--------------------------------------------------------------------------------
1 | ---
2 | hip: 844
3 | title: Handling and externalisation improvements for account nonce updates
4 | author: Stoyan Panayotov