Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/MeadowSuite/Meadow
Integrated Ethereum implementation and tool suite focused on Solidity testing and development.
https://github.com/MeadowSuite/Meadow
blockchain csharp debugging ethereum netcore smart-contracts solidity solidity-contracts solidity-coverage testing unit-testing
Last synced: 9 days ago
JSON representation
Integrated Ethereum implementation and tool suite focused on Solidity testing and development.
- Host: GitHub
- URL: https://github.com/MeadowSuite/Meadow
- Owner: MeadowSuite
- License: mit
- Created: 2018-09-17T22:49:50.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T01:54:11.000Z (almost 2 years ago)
- Last Synced: 2024-08-01T02:25:53.845Z (3 months ago)
- Topics: blockchain, csharp, debugging, ethereum, netcore, smart-contracts, solidity, solidity-contracts, solidity-coverage, testing, unit-testing
- Language: C#
- Homepage:
- Size: 1.73 MB
- Stars: 141
- Watchers: 18
- Forks: 23
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-dotnet-core - Meadow - An integrated Ethereum implementation and tool suite focused on Solidity testing and development. (Frameworks, Libraries and Tools / Blockchain)
- awesome-dotnet-core - Meadow - 一个集成的以太坊实施和工具套件,专注于Solidity测试和开发。 (框架, 库和工具 / 区块链)
- fucking-awesome-dotnet-core - Meadow - An integrated Ethereum implementation and tool suite focused on Solidity testing and development. (Frameworks, Libraries and Tools / Blockchain)
- awesome-dotnet-core - Meadow - An integrated Ethereum implementation and tool suite focused on Solidity testing and development. (Frameworks, Libraries and Tools / Blockchain)
README
# Meadow
An Ethereum implementation and tool suite designed for Solidity testing and development. The unit testing framework provides fast parallelized test execution, built-in code coverage reporting, strongly typed Contract interfaces with powerful code-completion, Solidity stacktraces for reverts and exceptions, breakpoint debugging and more.
Written completely in cross-platform C# with .NET Core. Meadow can be used in [VS Code](https://code.visualstudio.com/), [Visual Studio](https://visualstudio.microsoft.com/vs/), and [JetBrains Rider](https://www.jetbrains.com/rider/).
[![Coverage; Report Generator; TeamCity](http://192.241.156.100:8111/repository/download/Meadow_MeadowSuiteTest/lastSuccessful/coverage.zip%21/badge_combined.svg?guest=1)](http://192.241.156.100:8111/viewLog.html?buildId=lastSuccessful&buildTypeId=Meadow_MeadowSuiteTest&tab=report_project2_Code_Coverage&guest=1)
[![Coveralls](https://img.shields.io/coveralls/github/MeadowSuite/Meadow/master.svg?label=Coveralls.io)](https://coveralls.io/github/MeadowSuite/Meadow?branch=master)
[![codecov](https://img.shields.io/codecov/c/github/MeadowSuite/Meadow/master.svg?label=Codecov.io)](https://codecov.io/gh/MeadowSuite/Meadow)
[![AppVeyor Tests](https://img.shields.io/appveyor/tests/Meadow/Meadow/master.svg?label=AppVeyor%20Tests)](https://ci.appveyor.com/project/Meadow/meadow/branch/master)
[![Gitter](https://img.shields.io/gitter/room/MeadowSuite/Meadow.svg?label=Chat)](https://gitter.im/MeadowSuite/Lobby)
Builds
Windows Status
MacOS Status
## Quick start
Install [.NET Core SDK v2.1.4 or higher](https://www.microsoft.com/net/download), then run these commands in a new directory for your project:
```bash
dotnet new -i Meadow.ProjectTemplate
dotnet new meadow
```Open your project directory in VSCode or your favorite C# IDE.
## Guides
* [Writing unit tests](https://github.com/MeadowSuite/Meadow/wiki/Getting-Started-with-Unit-Tests) - getting started writing tests against Solidity contracts and generating code coverage reports.
* [Using the CLI](https://github.com/MeadowSuite/Meadow/wiki/Using-the-CLI) - contract deployment and interaction against testnode or production.
* [VSCode Solidity Debugger](https://github.com/MeadowSuite/Meadow/wiki/Using-the-VSCode-Solidity-Debugger)
* [Solidity Coverage Report](https://github.com/MeadowSuite/Meadow/wiki/Coverage-Report)
* [Configuration](https://github.com/MeadowSuite/Meadow/wiki/Configuration) - Specifying gas defaults, solc version, solc optimizer, accounts, RPC host, unit test parallelism, etc..
* [Usage examples; miscellaneous](https://github.com/MeadowSuite/Meadow/wiki/Usage-Examples) - ABI & RLP encoding, ECSign / ECRecover, testing reverts, etc..
---## Powerful Solidity contract development, deployment, and interaction
Provides an intuitive framework for writing C# to perform contract deployments, transactions, function calls, RPC requests, and more. Solidity source files are automatically compiled and exposed as C# classes with all contract methods, events, and natspec documentation. Includes a personal Ethereum test node that automatically is setup during test executions.
#### Visibility into Solidity revert / exception call stacks
Better understanding and investigation of Solidity execution problems.
---
# Solidity Coverage Reports
Perform thorough testing of Solidity codebases. Generate HTML and JSON code coverage reports showing .sol source code coverage for line, branch, and function execution.
---
# Solidity Debugger
[![vs marketplace](https://img.shields.io/vscode-marketplace/v/hosho.solidity-debugger.svg)](https://marketplace.visualstudio.com/items?itemName=hosho.solidity-debugger)
Solidity debugger extension for Visual Studio Code supporting breakpoints, stepping, rewinding, call stacks, local & state variable inspection.
---
# Components
Library
Description
Meadow.EVM
An Ethereum Virtual Machine that includes:
- Instructions/opcodes, calling conventions/messages/return values, memory/stack, logs/events, gas, charges/limits, precompiles, contract creation logic.
- Core Ethereum components: account storage, transaction receipts, transaction pool, blocks, world state, snapshoting/reverting, chain, mining/consensus mechanism/scoring/difficulty/uncles.
- Underlying dependencies: configuration/genesis block/fork/versioning/chain ID support, modified Merkle Patricia Trees, bloom filters, elliptic curve signing + public key recovery, Ethash, in-memory storage database.
Meadow.TestNode
Ethereum "personal blockchain" / "test node" / "RPC Server" / "Ethereum client". Ran as either a standalone server or via programmatic setup / teardown during unit test execution. Supports several non-standard RPC methods for debugging, testing, and coverage report generation.
Meadow.TestNode.Host
Standalone test RPC node/server used as a command line tool.
Meadow.SolCodeGen
Tool that compiles Solidity source files and generates a C# class for each contract. All public methods and events in the contract ABI are translated to corresponding idiomatic C# methods and event log classes. Solidity NatSpec comments / docs are also translated to IntelliSense / code-completion tooltips. This nuget package can be simply added to a project and Solidity files in the project
contracts
directory are automatically compiled.
Meadow.CoverageReport
Generates HTML and JSON code coverage reports for Solidity source files. Uses execution trace data from the EVM.
Meadow.UnitTestTemplate
Test harness providing seamless integration between MSTest and Solidity contracts. Provides a simple workflow where Solidity source files are dropped into a unit test project and C# contract code is automatically generated. C# unit tests can easily deploy/call/transact with contracts. RPC test node servers & clients are automatically boostrapped and provided to unit tests. Code coverage reports are automatically generated after unit tests are ran.
Meadow.Cli
Tool that allows contract deployments and interaction through the command line. Solidity source files are live-compiled using a file system watcher. Can be ran against a automatically bootstrapped test RPC node or an externally configured node. Leverages PowerShell Core to a provide cross platform REPL-like environment with powerful tab-completion when interacting with contracts.
Meadow.Core
- RLP and ABI encoding & decoding utils.
- Implementations of Ethereum / solidity types such as Address, UInt256, Hash, etc.
- BIP32, BIP39, BIP44, HD account derivation implementation.
- Fast managed Keccak hashing.
- ECDSA / secp256k1 utils.
Meadow.JsonRpc
- .NET types for the Ethereum JSON-RPC request & response data structures.
- .NET interface for all RPC methods.
- Serialization for JSON/hex object formats <-> Solidity/.NET types.
Meadow.JsonRpc.Client
JSON-RPC client implementation, supported transports: http, WebSocket, and IPC.
Meadow.JsonRpc.Server
Fast and lightweight HTTP and WebSockets JSON-RPC server - using Kestrel and managed sockets.