{"id":13820001,"url":"https://github.com/everscale-actions/everscale-dotnet","last_synced_at":"2026-02-25T16:03:30.159Z","repository":{"id":44573638,"uuid":"281046095","full_name":"everscale-actions/everscale-dotnet","owner":"everscale-actions","description":".NET Client for Everscale Network","archived":false,"fork":false,"pushed_at":"2025-12-15T18:15:19.000Z","size":74290,"stargazers_count":6,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-19T08:10:51.098Z","etag":null,"topics":["blazor","csharp","dotnet","everscale","freeton","net","sdk","ton","wasm"],"latest_commit_sha":null,"homepage":"","language":"C#","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/everscale-actions.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["ch1seL"]}},"created_at":"2020-07-20T07:29:29.000Z","updated_at":"2025-11-14T09:41:41.000Z","dependencies_parsed_at":"2023-02-09T11:15:42.740Z","dependency_job_id":"8db1fa69-4bfb-4edb-967d-0f205c70f576","html_url":"https://github.com/everscale-actions/everscale-dotnet","commit_stats":{"total_commits":403,"total_committers":4,"mean_commits":100.75,"dds":0.04962779156327546,"last_synced_commit":"184e80c626a272b9fab9ae35c45974551dbd750f"},"previous_names":["ton-actions/ton-client-dotnet"],"tags_count":122,"template":false,"template_full_name":null,"purl":"pkg:github/everscale-actions/everscale-dotnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everscale-actions%2Feverscale-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everscale-actions%2Feverscale-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everscale-actions%2Feverscale-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everscale-actions%2Feverscale-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/everscale-actions","download_url":"https://codeload.github.com/everscale-actions/everscale-dotnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everscale-actions%2Feverscale-dotnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29829409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T15:41:19.027Z","status":"ssl_error","status_checked_at":"2026-02-25T15:40:47.150Z","response_time":61,"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":["blazor","csharp","dotnet","everscale","freeton","net","sdk","ton","wasm"],"created_at":"2024-08-04T08:00:56.688Z","updated_at":"2026-02-25T16:03:30.140Z","avatar_url":"https://github.com/everscale-actions.png","language":"C#","funding_links":["https://github.com/sponsors/ch1seL"],"categories":["CSharp"],"sub_categories":[],"readme":"![Main workflow](https://github.com/everscale-actions/everscale-dotnet/workflows/Main%20workflow/badge.svg)\n[![Chat on Telegram](https://img.shields.io/badge/chat-on%20telegram-9cf.svg)](https://t.me/everscale_actions_chat)\n[\u003cimg src=\"https://avatars3.githubusercontent.com/u/67861283?s=150\u0026u=4536b61595a1b422604fab8a7012092d891278f6\u0026v=4\" align=\"right\" width=\"150\"\u003e](https://freeton.org/)\n\n# Everscale .NET Client\n\n[Everscale](https://everscale.network/) is secure and scalable network. Lets do this network convenient both for users\nand developers!\n\n- This client was automatically generated\n  from [api.json](https://github.com/tonlabs/TON-SDK/blob/master/tools/api.json) (\n  see [ClientGenerator](https://github.com/everscale-actions/everscale-dotnet/tree/master/tools/EverscaleNet.ClientGenerator))\n- Fully supported methods provided in SDK documentation https://github.com/tonlabs/TON-SDK/tree/master/docs\n- No Newtonsoft.Json required\n- The most complete support of CancellationToken\n- Net Standard 2.1, Net 6, Net 7, Net 8 compatible\n\n# Quick start\n\n**Be careful!** no network endpoints provided as default\n\n### Typical .Net application\n\n```shell\ndotnet add package EverscaleNet.Client\n```\n\n```csharp\nbuilder.Services.AddEverClient();\n```\n\n### Blazor WASM application\n\n```shell\ndotnet add package EverscaleNet.WebClient\n```\n\n```csharp\nbuilder.Services.AddEverWebClient();\n```\n\n## Ready to use everywhere\n\n```csharp\npublic class YourEverService {\n    private readonly IEverClient _everClient;\n\n    public YourEverService(IEverClient everClient) {\n        _everClient = everClient;\n    }\n    \n    public string GetEverSecretPhase() {\n        var mnemonic = await _everClient.Crypto.MnemonicFromRandom(new ParamsOfMnemonicFromRandom());\n        return mnemonic.Phrase;\n    }\n}\n```\n\n## PackageManager\n\nThere is easy option to load contracts abi, tvm, keys or code info from files or web in this client.\n\nNow available following async methods:\n\n```csharp\npublic interface IEverPackageManager {\n    Task\u003cPackage\u003e LoadPackage(string name); // Load whole package within Abi, Tvc, KeyPair and Code\n    Task\u003cAbi\u003e LoadAbi(string name);         // deserialize abi json to Abi\n    Task\u003cstring\u003e LoadTvc(string name);      // compiled contract in base64\n    Task\u003cKeyPair\u003e LoadKeyPair(string name); // deserialize keypair to KeyPair \n    Task\u003cstring\u003e LoadCode(string name);     // Load Code as text\n}\n```\n\nDefault contracts path is `_contracts`.\n**Be careful**, Blazor WASM app will search for `_contracts` relative to `wwwroot`.\n\n## Advanced client configuration\n\nSee configuration client parameters:\n\n* https://docs.everos.dev/ever-sdk/reference/types-and-methods/mod_client#clientconfig\n* https://docs.everos.dev/ever-sdk/guides/configuration/endpoint-configuration\n\n### Example configuration for typical client\n\n```csharp\nbuilder.Services\n  .AddEverClient(client =\u003e {\n        client.Network.Endpoints = new[] { \"http://mainnet.evercloud.dev/your-project-id-here/graphql\" };\n        client.Network.NetworkRetriesCount = 5;\n    }, packageManager =\u003e\n    {\n        packageManager.PackagesPath = \"_my_contracts\"; // path to files, _contracts is default\n        packageManager.AbiFileTemplate = \"{0}.abi.json\"; \n        packageManager.TvcFileTemplate = \"{0}.tvc\";\n        packageManager.KeyPairFileTemplate = \"{0}.keys.json\"; \n        packageManager.CodeFileTemplate = \"{0}.code\"; \n    });\n```\n\n### Example configuration for Blazor Wasm client\n\n```csharp\nbuilder.Services\n  .AddEverWebClient(client =\u003e {\n         client.Network.Endpoints = new[] { \"http://mainnet.evercloud.dev/your-project-id-here/graphql\" };\n         ..\n     }, packageManager =\u003e {\n         packageManager.BasePath = \"http://your_site.com\"; // can be builder.HostEnvironment.BaseAddress\n         packageManager.PackagesPath = \"_my_contracts\"; // path relative to `wwwroot`\n         ..\n     }, libWeb =\u003e { \n         // configuring js wasm wrapper\n         // see https://github.com/tonlabs/ever-sdk-js#setup-library\n         libWeb.DisableSeparateWorker = false;\n         libWeb.BinaryUrl = \"/_content/EverscaleNet.Adapter.Wasm/eversdk.wasm\";\n     });\n```\n\nBlazor WASM [sample](https://github.com/everscale-actions/everscale-dotnet/tree/main/samples/BlazorApp)\n\n### Configure options by appsettings.json or another configuration provider\n\nhttps://docs.microsoft.com/en-us/dotnet/core/extensions/configuration-providers\n\n#### Example for appsettings.json\n\n```csharp\n{\n  \"EverClient\": {\n    \"Network\": {\n      \"Endpoints\": [ \"http://mainnet.evercloud.dev/your-project-id-here/graphql\" ],\n      \"WaitForTimeout\": 5000\n    }\n  },\n  \"PackageManager\": {\n    \"PackagesPath\": \"_my_contracts\"\n  }\n}\n```\n\n```csharp\nbuilder.Services\n    .AddEverClient()        \n    .Configure\u003cEverClientOptions\u003e(Configuration.GetSection(\"EverClient\"))\n    .Configure\u003cPackageManagerOptions\u003e(Configuration.GetSection(\"PackageManager\"));\n```\n\n## Logging\n\nFully compatible with https://docs.microsoft.com/en-us/dotnet/core/extensions/logging\n\n## Prototype type extensions\n\nThere are a few properties with type JsonElement in data models.\nAnd this client provide methods to easy convert this properties to/from Prototype.\n\n### Convert to Prototype example:\n\n```\nResultOfParse parseResult = await everClient.Boc.ParseMessage(new ParamsOfParse\n{\n    Boc = \"te6ccgEBAQEAWAAAq2n+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzSsG8DgAAAAAjuOu9NAL7BxYpA\"\n});\nvar parsedPrototype = new {type = default(int), id = default(string)};\nvar parsedMessage = parseResult.Parsed!.Value.ToPrototype(parsedPrototype);\n\n_logger.LogInformation(\"Parsed message id: {id} type: {type}\", parsedMessage.id, parsedMessage.type);\n```\n\n### Convert from Prototype example:\n\n```\nawait everClient.Net.WaitForCollection(new ParamsOfWaitForCollection\n{\n    Collection = \"transactions\",\n    Filter = new {in_msg = new {eq = parsedMessage.id}}.ToJsonElement(),\n    Result = \"id\"\n});\n```\n\n## Testing Framework and AppKit\n\n```shell\ndotnet add package EverscaleNet.AppKit\ndotnet add package EverscaleNet.Testing\n```\n\nThere are a few useful things in the libs\n\n### EverscaleNet.AppKit - simplify work with contracts and accounts\n\n- AccountBase - used to create C# contact wrappers\n- IMultisigAccount(MultisigAccount) - base for mutisig wallet\n- automatically compile all sol and tsol files in your project\n\nSolidity compiling parameters(set with PropertyGroup or `-p` parameter):\n\n- SolCompilerVersion (default: latest)\n- TVMLinkerVersion (default: latest)\n- ContractsBasePath (default: _contracts)\n\n### EverscaleNet.Testing - simplify the testing\n\n- InitKeyPairService - hosted service to add KeyPair with random keys to DI\n- IEverGiver(EverGiverV3) - giver interface configured by GiverOptions (SE keys by default)\n- InitMultisigAccountService - hosted service to init MultisigAccount\n\nsee examples for testing\nframework https://github.com/everscale-actions/everscale-dotnet/tree/main/samples/TestingExample\n\n## Samples\n\nhttps://github.com/everscale-actions/everscale-dotnet/tree/master/samples/\n\n## Support us\n\nThis project has no funding, but everyone can support.\n\nSurf\nWallet: [0:9b487d68e4f029ab6d92640892d99d1c549ae69b198df414e905350559a165bf](https://uri.ever.surf/surf/0:9b487d68e4f029ab6d92640892d99d1c549ae69b198df414e905350559a165bf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverscale-actions%2Feverscale-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feverscale-actions%2Feverscale-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverscale-actions%2Feverscale-dotnet/lists"}