{"id":19903240,"url":"https://github.com/nethereum/chain-features","last_synced_at":"2026-02-11T10:01:48.093Z","repository":{"id":89828546,"uuid":"506967877","full_name":"Nethereum/Chain-Features","owner":"Nethereum","description":"A repository to use as a point of reference for specific Chain Features to be configured in Nethereum","archived":false,"fork":false,"pushed_at":"2022-06-24T10:38:26.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-08T20:53:22.435Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nethereum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-24T10:22:08.000Z","updated_at":"2022-06-24T10:22:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a7d4874-2766-4457-b38e-cb57eb3b067b","html_url":"https://github.com/Nethereum/Chain-Features","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Nethereum/Chain-Features","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nethereum%2FChain-Features","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nethereum%2FChain-Features/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nethereum%2FChain-Features/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nethereum%2FChain-Features/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nethereum","download_url":"https://codeload.github.com/Nethereum/Chain-Features/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nethereum%2FChain-Features/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29331594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T20:22:41.252Z","updated_at":"2026-02-11T10:01:48.064Z","avatar_url":"https://github.com/Nethereum.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chain-Features\nA repository to use as a simple point of reference for specific Chain Features to be configured in Nethereum. Ideally chain features will be an endpoint from the Node, see: https://ethereum-magicians.org/t/rfc-signer-feature-detection-over-json-rpc/5773, but when and if this is done, a mapping can be done to the existing service. \n\nA Chain Feature provides information of the capabilities of a Chain, for example does it support 1559? \nCurrently that is the main configuration check, but this can be extended with specific smart contract addresses like Proof Of Humanity, MultiCall, WETH Gateway Address in L2 and so on.\n\n### How do I add a chain capabilites for others to view?\n\nJust create an issue and it will be added to the Repo.\n\n### How does it work in Nethereum?\nThe current chain feature in Nethereum is defined as this:\n\n```csharp\n public class ChainFeature\n    {\n        public BigInteger ChainId { get; set; }\n        public bool SupportEIP1559 { get; set; } = true;\n        public string ChainName { get; set; }\n    }\n```\nTo register a feature just simply add them here.\n\n```csharp\nChainFeaturesService.Current.UpsertChainFeature(\n      new ChainFeature()\n      {\n          ChainName = \"Nethereum Test Chain\",\n          ChainId = 444444444500,\n          SupportEIP1559 = false\n      });\n```\n\n### Full example in Nethereum\nThis test demontrates how to set your custom chain properties, to flag if 1559 is supported or not. If not ChainFeature is configured, it will default to 1559, if the GasPrice is not set, or LegacyMode enabled.\n\n```csharp\n[Fact]\n        public async void ShouldSendTrasactionBasedOnChainFeature()\n        {\n\n            var web3 = _ethereumClientIntegrationFixture.GetWeb3();\n            ChainFeaturesService.Current.UpsertChainFeature(\n                new ChainFeature()\n                {\n                    ChainName = \"Nethereum Test Chain\",\n                    ChainId = 444444444500,\n                    SupportEIP1559 = false\n                });\n\n            var toAddress = \"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe\";\n            var tranHash = await web3.Eth.TransactionManager.SendTransactionAsync(new TransactionInput()\n            {\n                From = EthereumClientIntegrationFixture.AccountAddress,\n                To = toAddress,\n                Value = new HexBigInteger(100),\n            }\n            );\n\n            var tran = await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(tranHash);\n            Assert.NotNull(tran.TransactionHash);\n            Assert.Null(tran.MaxFeePerGas);\n            Assert.Null(tran.MaxPriorityFeePerGas);\n            Assert.NotNull(tran.GasPrice);\n\n            ChainFeaturesService.Current.UpsertChainFeature(\n                new ChainFeature()\n                {\n                    ChainName = \"Nethereum Test Chain\",\n                    ChainId = 444444444500,\n                    SupportEIP1559 = true\n                });\n\n            var tranHash2 = await web3.Eth.TransactionManager.SendTransactionAsync(new TransactionInput()\n            {\n                From = EthereumClientIntegrationFixture.AccountAddress,\n                To = toAddress,\n                Value = new HexBigInteger(100),\n            }\n            );\n\n            var tran2 = await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(tranHash2);\n            Assert.NotNull(tran2.TransactionHash);\n            Assert.NotNull(tran2.MaxFeePerGas);\n            Assert.NotNull(tran2.MaxPriorityFeePerGas);\n            Assert.NotNull(tran2.GasPrice);\n\n            ChainFeaturesService.Current.TryRemoveChainFeature(444444444500);\n            //Should default to 1559 when not feature is set\n\n            var tranHash3 = await web3.Eth.TransactionManager.SendTransactionAsync(new TransactionInput()\n            {\n                From = EthereumClientIntegrationFixture.AccountAddress,\n                To = toAddress,\n                Value = new HexBigInteger(100),\n            }\n           );\n\n            var tran3 = await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(tranHash3);\n            Assert.NotNull(tran3.TransactionHash);\n            Assert.NotNull(tran3.MaxFeePerGas);\n            Assert.NotNull(tran3.MaxPriorityFeePerGas);\n            Assert.NotNull(tran3.GasPrice);\n        }\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnethereum%2Fchain-features","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnethereum%2Fchain-features","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnethereum%2Fchain-features/lists"}