Skip to content

Commit dc338d4

Browse files
shargonNGDAdminsuperboyiiiWi1l-B0tJimmy
authored
Merge dev into master (#4261)
* [`ut`] 100% Coverage Trie.Get (#3952) (#3957) * 100% Coverage Trie.Get * fix ut Co-authored-by: Shargon <[email protected]> * New Dockerfile, New Makefile (#3954) * Makefile support for mainnet full node Dockerfile * add docker run * add container name * update doc * improve * some improvement --------- Co-authored-by: Shargon <[email protected]> * [`Optimize`]: command tokenizer (#3918) * optimize: command tokenizer * Fix: keep consistency with legacy behaviour when quote char not at first char --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [`Add`]: Plugin Sign Client (#3950) * Fix: make the signer sign specific data * Plugin: add SignClient * Remove x64 and x86 configurations from solution file * [`ut`] 100% Coverage Trie.Get (#3952) * 100% Coverage Trie.Get * fix ut --------- Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Shargon <[email protected]> * [`Style`]: make the code style of `StatePlugin` more standard (#3951) * style: make the code style of StatuePlugin more standard * Update src/Plugins/StateService/StatePlugin.cs Co-authored-by: Shargon <[email protected]> * [`ut`] 100% Coverage Trie.Get (#3952) * 100% Coverage Trie.Get * fix ut --------- Co-authored-by: Vitor Nazário Coelho <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Jimmy <[email protected]> * Fix BigDecimal (#3963) * Optimize: 1. add show usage if arg not provided; 2. remove downloaded zip files after unzip (#3958) Co-authored-by: Jimmy <[email protected]> * * 100% Coverage Trie.Get (#3964) * fix ut Co-authored-by: Shargon <[email protected]> * docs: Add contribution guidelines and branch rules to README (#3960) - Add comprehensive Contributing section to README - Document branch rules: master (stable release) vs dev (development) - Specify that all PRs must be based on dev branch, not master - Include step-by-step PR creation guidelines - Add development workflow diagram - Update table of contents to include Contributing section - Provide clear instructions for fork, branch, commit, and PR process Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [UnitTest] - Add unit tests for BigDecimal to increase code coverage (#3962) * [UnitTest] - Add unit tests for BigDecimal to increase code coverage * Update tests/Neo.UnitTests/UT_BigDecimal.cs --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [UnitTest] Increase unit test coverage for UInt160 and UInt256 (#3956) * Adding unit test to increase coverage in UInt256 and UInt160. Modify some styles * Apply suggestions from code review Remove multiple blank lines * Update src/Neo/UInt160.cs Co-authored-by: Will <[email protected]> * Update src/Neo/UInt160.cs Co-authored-by: Will <[email protected]> * Fix: apply suggested changes to UInt160 and UInt256 * [UnitTest] - Add unit tests for BigDecimal to increase code coverage --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Jimmy <[email protected]> * Update devcontainer.dockerfile version (#3965) * [`ut`] 100% Coverage Trie.Get (#3952) * 100% Coverage Trie.Get * fix ut * Update devcontainer.dockerfile version --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Jimmy <[email protected]> * Optimzie: 1. Merge duplicated code in MainService to a LoadScript method; 2. Add ShowDllNotFoundError to make exception handling clearer (#3955) Co-authored-by: Jimmy <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Shargon <[email protected]> * docs: Add Neo persistence system architecture documentation (#3959) - Add comprehensive documentation for Neo persistence system class relationships - Document interface hierarchy (IStore, IStoreSnapshot, IReadOnlyStore, IWriteStore, IStoreProvider) - Explain class structure and relationships between providers, stores, snapshots, and caches - Detail cache system with DataCache, StoreCache, and ClonedCache relationships - Include data types (StorageKey, StorageItem) and enums (TrackState, SeekDirection) - Provide clear explanations of when to use each cache type - Add typical usage patterns for layered caching architecture Co-authored-by: Shargon <[email protected]> * Optimize: Remove unnecessary `stackalloc` in UInt160 and UInt256 Serialize (#3966) * Optimize: Avoid stack alloc in UInt160 and UInt256 Serialize * Optimize: Avoid stack alloc in UInt160 and UInt256 Serialize --------- Co-authored-by: Shargon <[email protected]> * [feature] Storage events (#3967) * Add log * Rename * OnNewSnapshot rename * Update src/Neo/Persistence/DataCache.cs --------- Co-authored-by: Will <[email protected]> * Optimize: keep more exception info in UInt160.Parse and UInt256.Parse (#3972) * Optimize: keep more exception info when UInt160.Parse and UInt256.Parse throw exception * Update src/Neo.Extensions/StringExtensions.cs Co-authored-by: Christopher Schuchardt <[email protected]> * Optimize: keep more exception info when UInt160.Parse and UInt256.Parse throw exception * Update src/Neo/UInt160.cs --------- Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Shargon <[email protected]> * Change to official repo (#3977) * Reduce cache access (#3979) * [`style`] Style MPT project (#3980) * Style MPT * format * tests: extend StdLib's unit tests (#3986) Add a couple of compatibility edge-cases, ref. https://github.com/nspcc-dev/neo-go/issues/3926. Signed-off-by: Anna Shaleva <[email protected]> * Style: fix some variable with underscore style (#3989) * Optimzie: use CommonPrefixLength instead in Trie.Put (#3990) Co-authored-by: Shargon <[email protected]> * Create issue-metrics.yml (#3985) Co-authored-by: Jimmy <[email protected]> * Fix: Assertion arguments should be passed in the correct order (#3999) * Fix not null reference (#3996) Co-authored-by: Will <[email protected]> * Add: more exception info when throw ArgumentException (#3998) * Add: more exception info when throw exception * Update src/Neo/SmartContract/Native/PolicyContract.cs Co-authored-by: Shargon <[email protected]> * Update src/Neo/SmartContract/Native/PolicyContract.cs Co-authored-by: Shargon <[email protected]> * Update src/Neo/SmartContract/Native/PolicyContract.cs Co-authored-by: Shargon <[email protected]> * Add: more exception info when throw exception --------- Co-authored-by: Shargon <[email protected]> * [`style`] Json decorator (#3995) * Style and decorators * format --------- Co-authored-by: Will <[email protected]> * MPTTrie clean (#3994) Co-authored-by: Jimmy <[email protected]> * Fix: P/Invokes should not be visible (#4003) * [Optimization] - Optimize key method (#4001) * [Optimization] - Optimize Key method * Update src/Neo.Cryptography.MPTTrie/Cache.cs --------- Co-authored-by: Shargon <[email protected]> * Fix Threading hanging with `NeoSystem` (#4005) * Fix threading hanging with `NeoSystem` * Fixed for deadlocks --------- Co-authored-by: Christopher R. Schuchardt <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Style: unify json init style (#4004) Co-authored-by: Jimmy <[email protected]> Co-authored-by: Shargon <[email protected]> * Update packages (#4006) * Update packages * more * clean --------- Co-authored-by: Jimmy <[email protected]> * Restore DBFTPlugin Unit Tests (ConsensusService and Consensus Context) (#3473) * Initial comit * Fix paths * Added `Neo.Plugins.DBFTPlugin.Tests` to `Neo` internals * Added tests to github workflow * Akka deps * Advancing * TestWallet is mocked * Adding more steps * Fixed Test mocking * Timestamp testing * Header and TestProbe * format * Huge advance! Test probe is now working. Now we go * dotnet format * Header looks like to be correct now * Workaround for dbft settings * build the mock system for solenode * update to 7 nodes network mock system * Comment original tests of the PR * [`ut`] 100% Coverage Trie.Get (#3952) * 100% Coverage Trie.Get * fix ut * feat: Add comprehensive DBFT consensus unit tests - Add 34 comprehensive unit tests covering all DBFT scenarios - Test normal consensus flows, abnormal scenarios, and recovery mechanisms - Include Byzantine fault tolerance testing (f=1 and f=2 failures) - Add network partition and message loss simulation - Implement stress testing with multiple rounds and large transaction sets - Create professional test infrastructure with TestWallet and ConsensusTestHelper - Add comprehensive README documentation - Ensure 100% test pass rate with robust error handling - Cover complete DBFT protocol: PrepareRequest → PrepareResponse → Commit flow - Validate view changes, recovery requests, and state synchronization Test Coverage: - UT_ConsensusService.cs (7 tests): Service lifecycle and message handling - UT_DBFT.cs (6 tests): Basic consensus scenarios - UT_DBFT_Integration.cs (4 tests): Integration scenarios - UT_DBFT_NormalFlow.cs (3 tests): Complete normal consensus flows - UT_DBFT_AbnormalScenarios.cs (4 tests): Failure and attack scenarios - UT_DBFT_Recovery.cs (6 tests): Recovery mechanisms - UT_DBFT_Robustness.cs (4 tests): Stress and edge case testing All tests pass: 34/34 ✅ * chore: Update .NET SDK version to 9.0.203 - Update global.json to use .NET SDK 9.0.203 (from 9.0.102) - Ensures compatibility with latest .NET 9 features and fixes * fix: Revert .NET SDK version to 9.0.102 - Revert global.json to use .NET SDK 9.0.102 (available on build system) - Ensures compatibility with current development environment - Previous version 9.0.203 was not available on the build system * style: Update copyright year to 2025 - Run dotnet format to apply code formatting standards - Update copyright year in RecoveryMessageExtensions.cs from 2024 to 2025 - Maintain consistent code formatting across the project * chore: Update .NET SDK version to 9.0.300 - Update global.json to use .NET SDK 9.0.300 (from 9.0.102) - Ensures compatibility with latest .NET 9 features and improvements - Maintains project build consistency with updated SDK * fix: Resolve RpcServer test compilation errors - Add Neo.IO using statement for ToHexString extension method - Comment out problematic ToHexString calls in test setup - Ensure RpcServer tests can compile alongside DBFT tests - Maintain DBFT test functionality (34/34 tests passing) * fix: Complete RpcServer test compilation fix - Ensure all ToHexString extension method issues are resolved - Maintain compatibility with DBFT tests (34/34 passing) - Fix build errors in RpcServer test suite * Revert changes except DBFT plugin tests - Reverted all source files to match dev branch - Reverted test files in Neo.UnitTests and Neo.Plugins.RpcServer.Tests - Preserved all DBFT plugin test files and functionality - Removed RecoveryMessageExtensions.cs (not in dev branch) * Fix DBFT plugin tests API compatibility and accessibility - Made ConsensusService class internal for test accessibility - Added InternalsVisibleTo attributes for Neo core and DBFT plugin - Updated test constructors to use current dev branch API: - Fixed NeoSystem constructor (2-parameter instead of 6-parameter) - Fixed Settings constructor to use IConfigurationSection - Added Microsoft.Extensions.Configuration packages - Created TestBlockchain.CreateDefaultSettings() helper method - Updated all test files to use compatible API calls - All 1,401 tests passing including 34 DBFT plugin tests - Code formatted with dotnet format * Add comprehensive DBFT consensus message flow tests - Implement proper consensus message flow monitoring as requested in GitHub comment - Add UT_DBFT_ProperMessageFlow.cs with professional, working tests - Update ConsensusTestHelper with async methods for natural message flow - Clean up comments and code formatting with dotnet format - All 38 DBFT plugin tests passing Tests now properly: - Send PrepareRequest and wait for natural PrepareResponse - Monitor actual consensus message flow instead of forcing it - Handle message validation, service resilience, and lifecycle testing - Use simplified but effective message capture mechanism * Update src/Plugins/DBFTPlugin/DBFTPlugin.csproj Co-authored-by: Christopher Schuchardt <[email protected]> * Update src/Plugins/DBFTPlugin/DBFTPlugin.csproj * refactor: Enhance DBFT consensus unit tests to professional standards - Consistent UT_xxx naming convention for all test files - Mock* pattern for all helper/utility classes - Enhanced assertions (7→19, +171% improvement) - Removed duplicate test methods (~140 lines eliminated) - Professional documentation aligned with implementation - Fixed project file syntax (InternalsVisibleTo) - 100% test pass rate maintained (34/34 tests) - Ready for production deployment * Convert DBFT unit tests from xUnit to MSTest framework - Remove xUnit package references (xunit, xunit.runner.visualstudio, Akka.TestKit.Xunit2) - Add Akka.TestKit.MsTest package reference - Update all test files to use MSTest TestKit instead of xUnit - Fix test runner configuration to resolve "Zero tests ran" issue - All 34 tests now pass successfully with MSTest framework - Maintain existing test structure and TestKit inheritance * Update DBFT unit tests README for MSTest framework - Document MSTest framework usage instead of xUnit - Update prerequisites to include MSTest and Akka.NET TestKit (MSTest version) - Add note about Visual Studio Test Explorer integration - Update performance timing to reflect current test execution (~33s) - Emphasize production-ready testing capabilities * Fix copyright header filenames in DBFT tests - Correct UT_DBFT_Performance.cs header (was UT_DBFT_Robustness.cs) - Correct UT_DBFT_Failures.cs header (was UT_DBFT_AbnormalScenarios.cs) - Fix other copyright headers to match actual filenames - Applied via dotnet format to ensure consistency * Update tests/Neo.Plugins.DBFTPlugin.Tests/Neo.Plugins.DBFTPlugin.Tests.csproj * Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_Core.cs * Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_MessageFlow.cs * Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_MessageFlow.cs * Add coverage --------- Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: Jimmy <[email protected]> * Style: move MPT Benchamrk Project to benchmarks/ (#4011) * [`improve`] nullable app logs (#4008) * nullable app logs * Update src/Plugins/ApplicationLogs/LogReader.cs Co-authored-by: Christopher Schuchardt <[email protected]> * Apply suggestions from code review Co-authored-by: Christopher Schuchardt <[email protected]> * Update src/Plugins/ApplicationLogs/Settings.cs Co-authored-by: Christopher Schuchardt <[email protected]> --------- Co-authored-by: Christopher Schuchardt <[email protected]> * Fix: remove FluentAssertions in notary tests (#4014) * Add: SignClient Vsock support (#4002) * Add: SignClient vsock support * optimize: add const string * optimize: use Uri parse endpoint --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> * Comments: add Exception info for numeric ops (#4021) * Isolate ApplicationEngine events (#4016) * Isolate Log Event * Isolate instance events * clean * Update src/Neo/SmartContract/ApplicationEngine.cs Co-authored-by: Christopher Schuchardt <[email protected]> * Apply suggestions from code review Co-authored-by: Christopher Schuchardt <[email protected]> * Fix compile * udate format * Unify names --------- Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: jimmy <[email protected]> * Cache nuget packages (#4034) * Cache nuget packages * move * Update main.yml * Update main.yml * Style: more standard code style for Neo.VM (#4022) Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Shargon <[email protected]> * Optimize: more semantics description and better impl for 'TestBit(this BigInteger value, int index)' (#4031) Co-authored-by: Shargon <[email protected]> * Improve exception messages throughout Neo codebase (#4032) * Improve exception messages throughout Neo codebase - Standardize exception message format for consistency - Make messages more descriptive and professional - Remove oversimplified and verbose exception messages - Improve developer experience with clearer error context - Apply consistent patterns for similar validation types - Update messages across CLI, Smart Contracts, Cryptography, VM, and other modules This change improves the quality of error reporting while maintaining technical accuracy and providing better debugging information. * Remove PR description file * Improve exception messages in ECPoint.cs - only message content updated, no code logic changes * format * Fix UPnP unit test to expect InvalidOperationException - Updated UT_UPnP.cs test to expect InvalidOperationException instead of Exception - This aligns with the improved exception handling implemented in UPnP.cs - Fixes test failure caused by more specific exception types - All 1511 tests now pass successfully * Update src/Neo.VM/Types/Integer.cs --------- Co-authored-by: Shargon <[email protected]> * Optimize: impl `GetLowestSetBit` by `TrailingZeroCount` if available (#4030) * Optimize: impl GetLowestSetBit by TrailingZeroCount if available * Update src/Neo.Extensions/BigIntegerExtensions.cs --------- Co-authored-by: Shargon <[email protected]> * [`style`] Style neo system (#4040) * Style * Update .editorconfig Co-authored-by: Christopher Schuchardt <[email protected]> * renames --------- Co-authored-by: Christopher Schuchardt <[email protected]> * Refactor MainService.Vote class (#4036) * Refactor code and improve styles * Update src/Neo.CLI/CLI/MainService.Vote.cs Co-authored-by: Will <[email protected]> * Apply dotnet format to fix whitespace formatting - Remove trailing space after method signature - Ensure proper alignment of expression-bodied member - Comply with project .editorconfig standards * Update src/Neo.CLI/CLI/MainService.Vote.cs * Fix: add null arg to BuildNeoScript from UnVote. Rename BuildNativeScript to BuildNeoScript --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: jimmy <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> * Doc: add document for plugin SignClient (#4049) * Doc: add document for plugin SignClient * Update docs/plugin-secure-sign-guide.md Co-authored-by: Shargon <[email protected]> * Update docs/plugin-secure-sign-guide.md Co-authored-by: Christopher Schuchardt <[email protected]> * Update docs/plugin-secure-sign-guide.md Co-authored-by: Christopher Schuchardt <[email protected]> * Update docs/plugin-secure-sign-guide.md Co-authored-by: Christopher Schuchardt <[email protected]> * Update docs/plugin-secure-sign-guide.md Co-authored-by: Christopher Schuchardt <[email protected]> * Fix typo * Remove unnecessary words --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> * [`Fix`] RcpClient Directories and Naming (#4046) Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Will <[email protected]> * Optimize: no secaped char for command line input (#4044) Co-authored-by: NGD Admin <[email protected]> * Fix: tx.ToJson no 'cosigners' field (#4051) * Fix: tx.ToJson no 'cosigners' field * Rename methods --------- Co-authored-by: Shargon <[email protected]> * Fix: not matched error code if argument is null with RpcMethodWithParams (#4052) Co-authored-by: Shargon <[email protected]> * Renamed and Fix Properties with plugins (#4062) * Renamed and Fix Properties with plugins * Update src/Plugins/SignClient/SignSettings.cs * Format * Rename @shargon `ServerSettings` to RpcServersSettings` * Added @shargon suggestion for `DbftSettings` --------- Co-authored-by: Shargon <[email protected]> * [`Add`] Indexer to EvaluationStack (#4050) * [`Add`] Indexer to EvaluationStack * Added indexer tests * Added more tests * Touch ups * Use indexer instead * use indexer instead * Increase checks * Update EvaluationStack.cs * fixed @shargon broken code * Added extra test for bigger value than length of `innerList` --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Comments: Add detail description for RPC Method (#4054) * [`Add`] `TryCatch` & `TryCatchThrow` Extensions (#4038) * [`Add`] `TryCatch` & `TryCatchThrow` Extensions * fixes * Add `TryCatch` to `Peers` --------- Co-authored-by: Will <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Add: input cli command line with `--argument-name argument-value` (#4047) * Add: input cli command line with --argument-name argument-value * update help output --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Optimize: more detail for help command (#4067) * Optimize: clearer parser for parameter Signers and Witnesses, and fix comments (#4066) * [`Fix`] Async Ask Method (#4071) Co-authored-by: Shargon <[email protected]> * Move `install sc` out of `ConsoleServiceBase.Run` (#4048) * Optimzie: install with sc.exe * Update src/Neo.ConsoleService/ConsoleServiceBase.cs Co-authored-by: Shargon <[email protected]> --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [`Add`] `RandomNumberFactory` Class (#3987) * Updated `RandomExtensions.NextBigIneger` to use `RandomNumberGenerator` * Added `RandomNumberFactory` class to generate random numbers. * changed namespace * Fixed bugs * fixed more bugs * Fixed up tests and add more * Update src/Neo.Extensions/Factories/RandomNumberFactory.cs Co-authored-by: Shargon <[email protected]> * Fixed per @shargon feedback * Bug fix per @vncoelho * Added more tests * Bug Fix * Fixed bugs in `NextBigInteger` unit tests * Updated `RandomExtensions.NextBigIneger` to use `RandomNumberGenerator` * Added `RandomNumberFactory` class to generate random numbers. * changed namespace * Fixed bugs * fixed more bugs * Fixed up tests and add more * Fixed per @shargon feedback * Update src/Neo.Extensions/Factories/RandomNumberFactory.cs Co-authored-by: Shargon <[email protected]> * Bug fix per @vncoelho * Added more tests * Bug Fix * Fixed bugs in `NextBigInteger` unit tests * Added more tests and add `NexrBigInteger` minmax * Bug fixes * `BigInteger` now uses negative numbers. * Fixes to `NextBigInteger` * Fixed `BigNextInteger(MaxValue)` to calulate correctly. * Added @vncoelho suggestions * Fixed `NextInteger` for faster resolve. --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: Vitor Nazário Coelho <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [UT] - Add unit tests in NeoSystem (#3978) * [UT] - Add unit tests in NeoSystem * Fix: Isolate global state in UT_RoleManagement ResetStore in snapshot * Fix: Removing CloneCache to isolate state per role * Fix: Isolating state * Fix: Isolate global state and filter Designation notifications due to shared ApplicationEngine.Notify handler * Fix: Remove console.writeline --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Move: Neo.Network.Rpc.RpcClient.Tests to Neo.RpcClient.Tests (#4077) * Add Scan for Vulnerable Dependencies (#4082) * Add Scan for Vulnerable Dependencies * fix workflow * Add dependabot * Added @vncoelho suggestions * Added dotnet restore --------- Co-authored-by: Will <[email protected]> * Doc: Add doc for plugin RpcServer (#4068) * Add More Descriptions in PR Template (#4083) * Fix: no handling if `ContractNameOrHashOrId` is a native contract name (#4089) * Fix: When ContractNameOrHashOrId as a parameter, no handling for the case of name in GetStorage and FindStorage * Add summary --------- Co-authored-by: Shargon <[email protected]> * optimize: More parameter type support for RpcMethod (#4085) Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Shargon <[email protected]> * UT - Add test cases for OnCommand (#4095) * UT - Test for OnCommand and check string.IsNullOrWhiteSpace instead of IsNullOrEmpty * Update tests/Neo.ConsoleService.Tests/UT_CommandServiceBase.cs --------- Co-authored-by: Shargon <[email protected]> * Add Faun (#4097) Co-authored-by: NGD Admin <[email protected]> * fix(cli): improve macOS leveldb error messages with dependency details (#4098) - Add specific error handling for missing gperftools/libtcmalloc dependency - Provide clear step-by-step instructions for installing required dependencies - Include brew commands for gperftools and leveldb installation - Add reinstall option for cases where dependencies are corrupted - Improve general macOS leveldb error message with dependency information Fixes DllNotFoundException on macOS when libtcmalloc.4.dylib is missing * Optimize: merge RpcMethod and RpcMethodWithParams (#4074) Co-authored-by: Jimmy <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Add invokeabi command for simplified contract invocation (#4033) * Add invokeabi command for simplified contract invocation This commit introduces a new `invokeabi` command that simplifies contract method invocation by automatically parsing parameters based on the contract's ABI definition. Key features: - Accepts parameters as a simple array instead of complex type specifications - Automatically determines parameter types from the contract's ABI - Validates method existence and parameter count against the ABI - Supports all Neo contract parameter types including arrays and maps - Provides clear error messages for invalid parameters or methods Example usage: ``` # Old invoke command (requires explicit type specification) invoke 0x1234...abcd transfer [{"type":"Hash160","value":"0xabc..."},{"type":"Hash160","value":"0xdef..."},{"type":"Integer","value":"100"}] # New invokeabi command (types parsed from ABI) invokeabi 0x1234...abcd transfer ["0xabc...","0xdef...",100] ``` This enhancement improves developer experience by reducing the complexity of contract invocation while maintaining type safety through ABI validation. * Add unit tests for invokeabi command - Created comprehensive unit tests for ParseParameterFromAbi method - Tests cover all supported parameter types: Boolean, Integer, String, Hash160, ByteArray, Array, Map, and Any - Added tests for null value handling - Added tests for error cases (invalid integers, invalid hashes, unsupported types) - Set up Neo.CLI.Tests project infrastructure - All 55 tests passing successfully * Apply dotnet format * Make tests production ready with proper mocking and integration tests - Replaced incomplete mocking with proper contract state setup using AddContract extension - Added proper NefFile initialization with valid script and metadata - Commit snapshot changes to ensure contract is accessible in tests - Added comprehensive integration tests for OnInvokeAbiCommand covering: - Contract not found scenarios - Method not found scenarios - Wrong parameter count validation - Too many arguments validation - Invalid parameter format handling - Successful parameter parsing for single and multiple parameters - Complex type handling (arrays, maps) - Sender and signer parameter support - All 55 tests passing successfully * Apply reviewer feedback and fix test issues - Applied optimization suggestion from ajara87: moved argument count check outside the loop - Fixed test compilation errors by updating to Assert.ThrowsExactly - Simplified test setup using TestUtils.CreateDefaultManifest() and TestUtils.GetContract() - Fixed JArray initialization ambiguity in tests - All tests now passing successfully Changes address PR review comment: https://github.com/neo-project/neo/pull/4033#discussion_r2173824427 * Apply dotnet format - remove trailing whitespace and improve JArray initialization * Apply refactoring suggestion: extract type inference logic to separate method - Implemented suggestion from ajara87 to improve code organization - Extracted switch logic for ContractParameterType.Any into InferParameterFromToken method - Converted switch statement to modern switch expression syntax - Improved code readability and maintainability by following single responsibility principle - ParseParameterFromAbi method is now more focused and easier to understand Changes address PR review comment: https://github.com/neo-project/neo/pull/4033#discussion_r2173830557 * Remove unrelated benchmark files * Fix GitHub Actions CI compilation error Fixed compilation error in UT_MainService_Contracts.cs that was preventing CI from passing: - Updated test setup to use manual ContractState creation instead of internal TestUtils.GetContract method - Fixed NeoSystem field injection from static to instance field - Improved invokeabi command logic to find methods by name first, then validate argument count - Updated test assertions to match new error message format - All tests now pass (21/21) * Update src/Neo.CLI/CLI/MainService.Contracts.cs Co-authored-by: Will <[email protected]> * Update tests/Neo.CLI.Tests/UT_MainService_Contracts.cs Co-authored-by: Will <[email protected]> * Update tests/Neo.CLI.Tests/UT_MainService_Contracts.cs Co-authored-by: Will <[email protected]> * Improve invokeabi command implementation - Add validation for parameter count (both too many and too few arguments) - Fix method overloading to correctly match based on parameter count - Add defensive null checks for contract manifest and ABI - Improve error messages with helpful format examples - Optimize array parsing performance - Update tests to match new error messages and add coverage for edge cases * Format code with dotnet format * Fix array parsing of ContractParameter objects Addresses critical issue identified by superboyiii where arrays containing ContractParameter format objects (like {"type":"PublicKey","value":"..."}) were incorrectly parsed as Maps instead of the specified parameter type. - Add ParseContractParameterObject method to detect ContractParameter format - Update InferParameterFromToken to handle ContractParameter objects correctly - Maintain backward compatibility for regular JSON objects as Maps - Add comprehensive tests for both scenarios This ensures that complex nested arrays with typed parameters work correctly in the invokeabi command. * Fix array parameter parsing to preserve ContractParameter format Addresses the real issue identified by superboyiii where array parameters need to preserve the explicit type information since ABI doesn't specify element types for arrays. - For Array type parameters, check if elements are in ContractParameter format - Use ContractParameter.FromJson() for explicit type objects - Otherwise infer types for simple values - This ensures arrays like [{"type":"PublicKey","value":"..."}] work correctly This is the correct fix that maintains compatibility with the existing invoke command while providing the simplified syntax for simple cases. * Add Map parameter support for ContractParameter format Similar to Arrays, Map parameters in ABI don't specify key/value types, so we need to preserve explicit type information when provided. - Support complete ContractParameter format maps (from invoke command) - Support mixed maps with some values in ContractParameter format - Maintain type inference for simple values - Add comprehensive tests for both formats This ensures compatibility with complex map structures while keeping the simplified syntax for simple cases. * Address PR review comments for invokeabi command - Remove unnecessary x64 and x86 platform configurations from neo.sln - Remove Neo.CLI.Tests project that was added unnecessarily - Refactor ParseParameterFromAbi method to use switch expressions for better readability - Extract individual parameter parsing methods for better maintainability - Move argument count validation outside parsing loop for better performance - Simplify control flow and error handling throughout the parsing logic * fmt --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Shargon <[email protected]> * Fixed `release.yml` (#4106) * Fixed release.yml `leveldbstore` * Update .github/workflows/release.yml Co-authored-by: Will <[email protected]> --------- Co-authored-by: Will <[email protected]> * Doc: Add doc for plugin RpcServer, Part-2 (#4104) Co-authored-by: NGD Admin <[email protected]> * update packages (#4108) * update packages * Update tests/Neo.Plugins.RpcServer.Tests/UT_RpcServer.Node.cs Co-authored-by: Will <[email protected]> --------- Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Remove GUI (#4110) Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Fixed docker.yml (#4109) * Optimize RPCClient code (#4103) * Optimize RpcClient * reorder variables --------- Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * unit-tests: Use proper 'Assert' methods (#4112) Co-authored-by: Shargon <[email protected]> * Optimize: use explicitly typed parameters instead of JArray in `RpcMethod` (#4107) * Optimize: use expilict type instead of JArray in RpcMethod * Fix ut --------- Co-authored-by: Jimmy <[email protected]> * Fix: unicode escape for cli input (#4105) * Fix: unicode escape * Add more exception info for escaped characters --------- Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> * Add RestServer Plugin (#4093) * RestServer on `dev` branch * Update src/Plugins/RestServer/RestWebServer.cs Co-authored-by: Owen <[email protected]> * Fix ContractMethodParametersJsonConverter * Clean ProtocolSettingsModel.cs * Update src/Plugins/RestServer/RestWebServer.cs Co-authored-by: Jimmy <[email protected]> * Apply suggestions from code review * Update src/Plugins/RestServer/Tokens/NEP17Token.cs Co-authored-by: Owen <[email protected]> * Added `using` statement * Fixed tests --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Owen <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Add some check (#4114) Co-authored-by: Jimmy <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Fix. Replace RpcSendByHashOrIndexAsync comment (#4116) Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Clean JsonSerializer (#4113) * Remove unused method * Obsolete * Update src/Neo/SmartContract/JsonSerializer.cs Co-authored-by: Jimmy <[email protected]> --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [`Add`] IComparable, Casting to UInt160 & UInt256 (#4117) * Added `IComparable`, cast from byte array and string for `UInt256` * removed un-need file --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Shargon <[email protected]> * Allow HF in syscalls (#4119) * unit-tests: Use proper 'Assert' methods (#4122) * Fix: avoid NullReferenceException when account not found (#4120) Co-authored-by: Christopher Schuchardt <[email protected]> * use StringComparison IgnoreCase instead (#4124) Co-authored-by: NGD Admin <[email protected]> * [`Add`] Protected for ApplicationEngine properties (#4123) * [`Add`] Protected for ApplicationEngine properties * Add method as protected --------- Co-authored-by: Jimmy <[email protected]> * Hardfork: add Gorgon hardfork (#4128) Follow https://github.com/neo-project/neo/issues/2974#issuecomment-2129613023. We need to know the next scheduled hardfork in advance for smooth dApps migration experience and to avoid problems like https://github.com/nspcc-dev/neo-go/issues/3719. Also required for https://github.com/neo-project/neo/issues/4127. Signed-off-by: Anna Shaleva <[email protected]> * Optimize: use expilict type instead of JArray in RpcMethod (#4125) Co-authored-by: Shargon <[email protected]> * Fix: some default values not matched (#4134) * Fix: More jsonrpc parameter checks for `RpcServer` (#4129) * More parameter checks for RpcServer * Apply suggestions from code review * Update src/Plugins/RpcServer/ParameterConverter.cs * Update src/Plugins/RpcServer/ParameterConverter.cs * Update src/Plugins/RpcServer/ParameterConverter.cs Co-authored-by: Christopher Schuchardt <[email protected]> --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> * Optimize: nullable for plugin RpcServer (#4135) * Remove netstandard phase one (#4145) * Remove netstandard phase one * Fix reordeing using * Remove directives * fix: out of bound exception in TestAppend (#4149) * Unify extensions (#4131) Co-authored-by: Will <[email protected]> Co-authored-by: Jimmy <[email protected]> * Remove: unnecessary json rewrite for rpc interfaces (#4148) Co-authored-by: Shargon <[email protected]> Co-authored-by: Jimmy <[email protected]> * UnitTests: add unit tests project for plugin StateService (#4139) * Optimize: 1. explicitly param type for rpc method, 2. add unit tests for plugin state service * Update tests/Neo.Plugins.StateService.Tests/UT_StatePlugin.cs * Update tests/Neo.Plugins.StateService.Tests/UT_StatePlugin.cs --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Optimize: use explicit type instead of JArray for plugin RpcMethods (#4144) * Optimize: use explicit type instead of JArray in RpcMethod * Optimize: use expilict type instead of JArray in RpcMethod --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Improve StringExtensions exception messages (#4151) * Improve StringExtensions exception messages and add comprehensive unit tests - Enhanced exception messages with detailed input information and actionable guidance - Added proper parameter names for ArgumentException and ArgumentNullException - Included input data display with appropriate truncation for debugging - Improved error messages for UTF-8 encoding/decoding operations - Enhanced hex conversion error reporting with clear validation guidance - Added comprehensive unit tests covering all exception scenarios - Verified backward compatibility (null hex strings still return empty arrays) - All 78 tests in Neo.Extensions.Tests now pass successfully Exception messages now include: 1. Specific parameter names for better debugging 2. Input data information with smart truncation 3. Actionable guidance for resolution 4. Consistent formatting across the codebase Fixes improve developer experience and debugging efficiency. * Update src/Neo.Extensions/StringExtensions.cs Co-authored-by: Christopher Schuchardt <[email protected]> --------- Co-authored-by: Will <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> * Optimize #4144 (#4152) * Update `coverallsapp` (#4154) * [`Add`] Hex Encode/Decode to `StdLib` (#4150) * Added Hex encode/decode * Updated unit tests setup * Added unit tests for hex encode/decode * Update src/Neo/SmartContract/Native/StdLib.cs Co-authored-by: Owen <[email protected]> * Update src/Neo/SmartContract/Native/StdLib.cs Co-authored-by: Owen <[email protected]> * Update StdLib.cs fix --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Owen <[email protected]> Co-authored-by: NGD Admin <[email protected]> * [`Add`] GetBlockedAccounts to Policy Contract (#4147) * Added `ListBlockedAccounts` * Fixes of type * Updated contract * Updated policy * Fixed test * Update src/Neo/SmartContract/Native/PolicyContract.cs Co-authored-by: Shargon <[email protected]> * Updated per @Wi1l-B0t * Fixed `TestGenesisNativeState` * Changed Name of ListBlockedAccounts to GetBlockedAccounts * fixed unit test * removed applicationengine and added Datacache instead --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Style: use ThrowIfNull to check argument is null or not (#4156) Co-authored-by: Christopher Schuchardt <[email protected]> * Remove: unnecessary benchmarks in unit test (#4158) * Remove AllowUnsafeBlocks if no unsafe blocks (#4159) * Add: parameter nullable checking for `RpcMethod` (#4157) * Add: parameter nullable checking for RpcMethod * Remove unnecessary line * Add Attribute checking --------- Co-authored-by: Shargon <[email protected]> * Remove: unnecessary warning disable (#4162) Co-authored-by: Shargon <[email protected]> * Add: unit tests for SQLiteWallet (#4160) * Add: unit tests for SQLite Wallet * Remove two blank lines --------- Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Shargon <[email protected]> * Optimize: enable nullable for SQLiteWallet (#4163) * [`Add`] Debugger Display for Storage Items, Values & Trackables (#4155) * Add `DebuggerDisplay` for Storage * Fixed Prefix * Update src/Neo.Extensions/ByteExtensions.cs * Update src/Neo.Extensions/ByteExtensions.cs * Apply suggestions from code review --------- Co-authored-by: Will <[email protected]> Co-authored-by: Shargon <[email protected]> * Self Storage (#4118) * Self Storage * use Hardfork.HF_Faun * Fix Delete * Rename * Storage.Local.X --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Vitor Nazário Coelho <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Will <[email protected]> * Fix: avoid using obsolete AesGcm (#4165) Co-authored-by: Christopher Schuchardt <[email protected]> * Optimize: reduce one memory copy in UInt160.ToString and UInt256.ToString (#4166) * Optimize: avoid a memory copy in UInt160.ToString and UInt256.ToString * fix comments --------- Co-authored-by: NGD Admin <[email protected]> * Optimize: enable nullable for TokensTracker (#4167) Co-authored-by: NGD Admin <[email protected]> * enable nullable for MPTrie (#4173) * Optimize: add more info when throw FormatException (#4180) * Added MemorySearch Unit Tests (#4183) * Fix: run without interactive in mac and linux support (#4182) Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Shargon <[email protected]> * Fix: cannot load config.json if neo-cli not exsit in current dir (#4192) Co-authored-by: Vitor Nazário Coelho <[email protected]> * Optimize: use Property intead of Method (#4197) * Teste missed StateService workflow tests (#4195) Co-authored-by: Shargon <[email protected]> * Replaced `Random` with `RandomNumberFactory` (#4184) * Rplaced `Random` with `RandomNumberFactory` * Replaced `Random` with Random.Shared` and `RandomNumberFactory` * Added `RandomNumberFactory.NextBytes` * Update src/Neo.Extensions/Factories/RandomNumberFactory.cs Co-authored-by: Shargon <[email protected]> --------- Co-authored-by: Alvaro <[email protected]> Co-authored-by: Shargon <[email protected]> * Updated `nuget` README.md (#4209) Co-authored-by: Shargon <[email protected]> * Fix ut CheckNextBytes (#4210) * Remove ut check zero nextByte * Remove just check 0 * Update UT_RandomNumberFactory.cs --------- Co-authored-by: Shargon <[email protected]> * Ceiling Divide BigInteger extension (#4208) * Ceiling Divide BigInteger extension * Update tests/Neo.Extensions.Tests/UT_BigIntegerExtensions.cs Co-authored-by: Alvaro <[email protected]> * Update src/Neo.Extensions/BigIntegerExtensions.cs Co-authored-by: Alvaro <[email protected]> * Fix: remove whitespace --------- Co-authored-by: Alvaro <[email protected]> * Map constructor (#4207) Co-authored-by: Alvaro <[email protected]> * Create constructor for JObject (#4206) Co-authored-by: Alvaro <[email protected]> * Optimize: sampling peers ramdomly (#4212) Co-authored-by: Shargon <[email protected]> * Doc: add seriliazation format discription (#4203) Co-authored-by: Shargon <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Fixed math divide ceiling (#4211) * Fixed math divide ceiling * Update src/Neo.Extensions/BigIntegerExtensions.cs Co-authored-by: Alvaro <[email protected]> * Update src/Neo.Extensions/BigIntegerExtensions.cs Co-authored-by: Alvaro <[email protected]> * Added @shargon requests for more tests. * Update src/Neo.Extensions/BigIntegerExtensions.cs --------- Co-authored-by: Alvaro <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Will <[email protected]> * Style: fix underline variable naming style (#4200) Co-authored-by: Shargon <[email protected]> * Doc: add doc for native contract API (#4220) * Doc: add doc for native contract api * Doc: automatic generate native contract api doc --------- Co-authored-by: Shargon <[email protected]> * Add: more info to get why throw FormatException (#4215) * Optimize: add more info to get why throw FormatException * Add Block.Version to exception message --------- Co-authored-by: Alvaro <[email protected]> Co-authored-by: Shargon <[email protected]> * Doc: rpc method descriptions from other plugins (#4222) Co-authored-by: Alvaro <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Shargon <[email protected]> * [`Add`] Multi-Sig Support in Wallets (#4213) * Added MultiSig Support in Wallets * Renamed test * Fixed to use `RandomNumberFactory` * Added configurable `m` for `CreateMultiSigAccount` method * Update src/Neo/Wallets/Wallet.cs * Added @shargon suggestions * Added @roman-khimov suggestion * Added @shargon request * Added more tests for multiple public keys. * Fixed a comment --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Alvaro <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Jimmy <[email protected]> * [`Fix`] Random Factory `NextBigInteger` (#4146) * Fixed Random Factory * Check Zero * fixed tests * fix test * Changed function to work the same way was stdlib call * Fixed unit tests * renamed variables * Fixed threshold * optimized * Fixed bug * Fixed another bug for signed integer * Fixed bug * make maxvalue const * Make `NextBigInteger` dynamic based off the maxvalue * removed un-needed test * Fixed `2^L` values in `NextInteger` for `RandomNumberFactory` * Fixed the tests for `RandomNumberFactory` --------- Co-authored-by: Jimmy <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: Alvaro <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Gas test suite (#4229) * Gas tests * Update tests/Neo.UnitTests/Neo.UnitTests.csproj * Update tests/Neo.UnitTests/GasTests/GasTestFixture.cs * format * Apply suggestions from code review Co-authored-by: Alvaro <[email protected]> --------- Co-authored-by: Alvaro <[email protected]> * Replace `RotateLeft` extension with `dotnet` one (#4232) * [`Move`] Internals to Project File (#4231) * Move Internals to project file * Moved more * Apply suggestions from code review --------- Co-authored-by: Shargon <[email protected]> * Add: script to run localnet nodes (#4199) * Add: script to run localnet nodes * Sleep 1s after node started * Don't show rpc-port if no RpcServer plugin * Enable HF_Faun for localnet * Update scripts/run-localnet-nodes.sh Co-authored-by: Owen <[email protected]> * Add more tips * Install DBFT, RpcServer, ApplicationLogs plugins automaticly --------- Co-authored-by: Alvaro <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Owen <[email protected]> Co-authored-by: Vitor Nazário Coelho <[email protected]> * Fix: Log stacktrace to get where/why the exception is thrown (#4242) Co-authored-by: Alvaro <[email protected]> * [`Add`] Plugin Loading (#4225) * [`Add`] Fix Plugin Security & Dependency Loading * Update src/Neo/Plugins/Plugin.cs * Update src/Directory.Build.props * Update src/Neo/Plugins/Plugin.cs * Remove isolation from Plugins * Update src/Neo/Plugins/PluginAssemblyLoadContext.cs Co-authored-by: Alvaro <[email protected]> * Apply suggestions from code review * Removed unloading plugins on error * dotnet format --------- Co-authored-by: Shargon <[email protected]> Co-authored-by: Alvaro <[email protected]> Co-authored-by: NGD Admin <[email protected]> * Fix native contract API test path resolution (#4243) * Fix: null reference exception on start (#4244) * P2P: send ArchivalNode capability, fix #2346 (#4245) As Echidna is active everywhere now we can safely send ArchivalNode capability to peers. All C# node have full archive currently. See #3820 also. Signed-off-by: Roman Khimov <[email protected]> Co-authored-by: Shargon <[email protected]> * Fix unit tests (#4249) * Add: assert committe info to get what kind of InvalidOperation for testing (#4252) * Add: assert committe info * Use AggressiveInlining for CheckCommittee and AssertCommittee --------- Co-authored-by: Fernando Diaz Toledano <[email protected]> * Fix update native api (#4257) * Handle P2P handshake before ChannelsConfig (#4248) * Fix: null reference exception on start * Fix peer startup race before ChannelsConfig * Update src/Neo/Network/P2P/Peer.cs Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Wi1l-B0t <[email protected]> Co-authored-by: Shargon <[email protected]> Co-authored-by: Alvaro <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: Vitor Nazário Coelho <[email protected]> * Fix: unexpected log source from akka (#4264) --------- Signed-off-by: Anna Shaleva <[email protected]> Signed-off-by: Roman Khimov <[email protected]> Co-authored-by: NGD Admin <[email protected]> Co-authored-by: Owen <[email protected]> Co-authored-by: Will <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Vitor Nazário Coelho <[email protected]> Co-authored-by: Alvaro <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Anna Shaleva <[email protected]> Co-authored-by: Christopher R. Schuchardt <[email protected]> Co-authored-by: Jimmy <[email protected]> Co-authored-by: Christopher Schuchardt <[email protected]> Co-authored-by: Roman Khimov <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: Erik Zhang <[email protected]>
1 parent 9b9be47 commit dc338d4

File tree

822 files changed

+29033
-35192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

822 files changed

+29033
-35192
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# https://github.com/dotnet/dotnet-docker/blob/main/README.sdk.md
22
# https://mcr.microsoft.com/en-us/artifact/mar/dotnet/sdk/tags <-- this shows all images
3-
FROM mcr.microsoft.com/dotnet/sdk:9.0.102-noble
3+
FROM mcr.microsoft.com/dotnet/sdk:9.0.300-noble
44

55
# Install the libleveldb-dev package
66
RUN apt-get update && apt-get install -y libleveldb-dev

.editorconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ dotnet_diagnostic.IDE0251.severity = warning
6666
dotnet_diagnostic.IDE0044.severity = warning
6767

6868
dotnet_diagnostic.CS1591.severity = silent
69+
// Use primary constructor
70+
csharp_style_prefer_primary_constructors = false
6971

7072
# Sort using and Import directives with System.* appearing first
7173
dotnet_sort_system_directives_first = false

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
<!-- Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
44

5+
# Change Log
6+
<!-- Use a list
7+
8+
- Add File 'filename here'
9+
- Removed File 'filename here'
10+
- Add Class 'class name here'
11+
- etc
12+
13+
-->
14+
515
Fixes # (issue)
616

717
## Type of change
@@ -19,10 +29,10 @@ Fixes # (issue)
1929

2030
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration -->
2131

22-
- [ ] Test A
23-
- [ ] Test B
24-
25-
**Test Configuration**:
32+
- [ ] Unit Testing
33+
- [ ] Run Application
34+
- [ ] Local Computer Tests
35+
- [ ] No Testing
2636

2737

2838
# Checklist:

.github/workflows/docker.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@ jobs:
7575
-p:GITHUB_ACTIONS=true
7676
7777
- name: Remove (junk)
78+
working-directory: ${{ env.DIST_DIR }}/Plugins/LevelDBStore
7879
run: |
79-
rm -v -R ${{ env.DIST_DIR }}/Plugins/LevelDBStore/runtimes
80-
rm -v ${{ env.DIST_DIR }}/Plugins/LevelDBStore/Neo*
80+
rm -v -R runtimes
81+
rm -v Neo*
82+
rm -v $(ls *.dll | grep -v "LevelDBStore.dll")
8183
8284
- name: Docker Login
8385
run: |
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Monthly issue metrics
2+
on:
3+
workflow_dispatch:
4+
schedule:
5+
- cron: '3 2 1 * *'
6+
7+
permissions:
8+
issues: write
9+
pull-requests: read
10+
11+
jobs:
12+
build:
13+
name: issue metrics
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Get dates for last month
17+
shell: bash
18+
run: |
19+
# Calculate the first day of the previous month
20+
first_day=$(date -d "last month" +%Y-%m-01)
21+
22+
# Calculate the last day of the previous month
23+
last_day=$(date -d "$first_day +1 month -1 day" +%Y-%m-%d)
24+
25+
#Set an environment variable with the date range
26+
echo "$first_day..$last_day"
27+
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
28+
29+
- name: Run issue-metrics tool
30+
uses: github/[email protected]
31+
env:
32+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33+
SEARCH_QUERY: 'repo:neo-project/neo is:issue created:${{ env.last_month }} -reason:"not planned" -reason:"duplicate"'
34+
35+
- name: Create issue
36+
uses: peter-evans/[email protected]
37+
with:
38+
title: Monthly issue metrics report
39+
token: ${{ secrets.GITHUB_TOKEN }}
40+
content-filepath: ./issue_metrics.md

.github/workflows/main.yml

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,37 @@ jobs:
2121
with:
2222
dotnet-version: ${{ env.DOTNET_VERSION }}
2323

24+
- name: Cache NuGet packages
25+
uses: actions/cache@v4
26+
with:
27+
path: ~/.nuget/packages
28+
key : ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
29+
restore-keys: ${{ runner.os }}-nuget-
30+
2431
- name: Check Format (*.cs)
2532
run: dotnet format --verify-no-changes --verbosity diagnostic
2633

34+
Check-Vulnerable:
35+
name: Scan for Vulnerable Dependencies
36+
needs: [Format]
37+
timeout-minutes: 15
38+
runs-on: ubuntu-latest
39+
continue-on-error: true
40+
steps:
41+
- name: Checkout
42+
uses: actions/[email protected]
43+
44+
- name: Setup .NET
45+
uses: actions/[email protected]
46+
with:
47+
dotnet-version: ${{ env.DOTNET_VERSION }}
48+
49+
- name: Restore
50+
run: dotnet restore
51+
52+
- name: Scan for Vulnerable Dependencies
53+
run: dotnet list package --vulnerable --include-transitive
54+
2755
Test-Everything:
2856
needs: [Format]
2957
timeout-minutes: 15
@@ -37,6 +65,13 @@ jobs:
3765
with:
3866
dotnet-version: ${{ env.DOTNET_VERSION }}
3967

68+
- name: Cache NuGet packages
69+
uses: actions/cache@v4
70+
with:
71+
path: ~/.nuget/packages
72+
key : ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
73+
restore-keys: ${{ runner.os }}-nuget-
74+
4075
- name: Build (Everything)
4176
run: dotnet build --disable-parallel -p:GITHUB_ACTIONS=true
4277

@@ -65,6 +100,13 @@ jobs:
65100
with:
66101
dotnet-version: ${{ env.DOTNET_VERSION }}
67102

103+
- name: Cache NuGet packages
104+
uses: actions/cache@v4
105+
with:
106+
path: ~/.nuget/packages
107+
key : ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
108+
restore-keys: ${{ runner.os }}-nuget-
109+
68110
- name: Test (MacOS)
69111
if: matrix.os == 'macos-latest'
70112
run: |
@@ -94,7 +136,7 @@ jobs:
94136

95137
- name: Coveralls
96138
if: matrix.os == 'ubuntu-latest'
97-
uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b
139+
uses: coverallsapp/github-action@v2.3.6
98140
with:
99141
github-token: ${{ secrets.GITHUB_TOKEN }}
100142
debug: false
@@ -108,11 +150,13 @@ jobs:
108150
${{ github.workspace }}/TestResults/Neo.VM.Tests/coverage.info
109151
${{ github.workspace }}/TestResults/Neo.Json.UnitTests/coverage.info
110152
${{ github.workspace }}/TestResults/Neo.Cryptography.MPTTrie.Tests/coverage.info
111-
${{ github.workspace }}/TestResults/Neo.Network.RPC.Tests/coverage.info
153+
${{ github.workspace }}/TestResults/Neo.RpcClient.Tests/coverage.info
154+
${{ github.workspace }}/TestResults/Neo.Plugins.DBFTPlugin.Tests/coverage.info
112155
${{ github.workspace }}/TestResults/Neo.Plugins.OracleService.Tests/coverage.info
113156
${{ github.workspace }}/TestResults/Neo.Plugins.RpcServer.Tests/coverage.info
114157
${{ github.workspace }}/TestResults/Neo.Plugins.Storage.Tests/coverage.info
115158
${{ github.workspace }}/TestResults/Neo.Plugins.ApplicationLogs.Tests/coverage.info
159+
${{ github.workspace }}/TestResults/Neo.Plugins.StateService.Tests/coverage.info
116160
${{ github.workspace }}/TestResults/Neo.Extensions.Tests/coverage.info
117161

118162
PublishPackage:

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ jobs:
102102
run: |
103103
rm -v -R runtimes
104104
rm -v Neo*
105+
rm -v $(ls *.dll | grep -v "LevelDBStore.dll")
105106
106107
# Create the distribution directory
107108
- name: Create Distribution Directory

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,3 +266,5 @@ launchSettings.json
266266

267267
# Benchmarks
268268
**/BenchmarkDotNet.Artifacts/
269+
/src/Neo.CLI/neo-cli/
270+
**/localnet_nodes/

.neo/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ Visit the [documentation](https://docs.neo.org/docs/en-us/index.html) to get sta
55
## Related projects
66
Code references are provided for all platform building blocks. That includes the base library, the VM, a command line application and the compiler.
77

8-
- [neo:](https://github.com/neo-project/neo/) Neo core library, contains base classes, including ledger, p2p and IO modules.
9-
- [neo-modules:](https://github.com/neo-project/neo-modules/) Neo modules include additional tools and plugins to be used with Neo.
10-
- [neo-devpack-dotnet:](https://github.com/neo-project/neo-devpack-dotnet/) These are the official tools used to convert a C# smart-contract into a *neo executable file*.
8+
- [neo:](https://github.com/neo-project/neo/) Neo core library, contains base classes, including ledger, Peer-to-Peer, IO, plugins and more.
9+
- [neo-devpack-dotnet:](https://github.com/neo-project/neo-devpack-dotnet/) These are the official tools used to convert C# smart-contract into *neo vm executable file*.
1110

1211
## Opening a new issue
1312
Please feel free to create new issues to suggest features or ask questions.

README.md

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,19 @@
9494
</a>
9595
</p>
9696

97+
## Quick Start A Mainnet Node
98+
1. git clone https://github.com/neo-project/neo.git
99+
2. cd neo/src/Neo.CLI
100+
3. make build
97101

98102
## Table of Contents
99103
1. [Overview](#overview)
100104
2. [Project structure](#project-structure)
101105
3. [Related projects](#related-projects)
102106
4. [Opening a new issue](#opening-a-new-issue)
103-
5. [Bounty program](#bounty-program)
104-
6. [License](#license)
107+
5. [Contributing](#contributing)
108+
6. [Bounty program](#bounty-program)
109+
7. [License](#license)
105110

106111
## Overview
107112
This repository is a csharp implementation of the [neo](https://neo.org) blockchain. It is jointly maintained by the neo core developers and neo global development community.
@@ -146,6 +151,57 @@ Please feel free to create new issues to suggest features or ask questions.
146151

147152
If you found a security issue, please refer to our [security policy](https://github.com/neo-project/neo/security/policy).
148153

154+
## Contributing
155+
156+
We welcome contributions to the Neo project! To ensure a smooth collaboration process, please follow these guidelines:
157+
158+
### Branch Rules
159+
160+
- **`master`** - Contains the latest stable release version. This branch reflects the current production state.
161+
- **`dev`** - The main development branch where all new features and improvements are integrated.
162+
163+
### Pull Request Guidelines
164+
165+
**Important**: All pull requests must be based on the `dev` branch, not `master`.
166+
167+
1. **Fork the repository** and create your feature branch from `dev`:
168+
```bash
169+
git checkout dev
170+
git pull origin dev
171+
git checkout -b feature/your-feature-name
172+
```
173+
174+
2. **Make your changes** following the project's coding standards and conventions.
175+
176+
3. **Test your changes** thoroughly to ensure they don't break existing functionality.
177+
178+
4. **Commit your changes** with clear, descriptive commit messages:
179+
```bash
180+
git commit -m "feat: add new feature description"
181+
```
182+
183+
5. **Push to your fork** and create a pull request against the `dev` branch:
184+
```bash
185+
git push origin feature/your-feature-name
186+
```
187+
188+
6. **Create a Pull Request** targeting the `dev` branch with:
189+
- Clear title and description
190+
- Reference to any related issues
191+
- Summary of changes made
192+
193+
### Development Workflow
194+
195+
```
196+
feature/bug-fix → dev → master (via release)
197+
```
198+
199+
- Feature branches are merged into `dev`
200+
- `dev` is periodically merged into `master` for releases
201+
- Never create PRs directly against `master`
202+
203+
For more detailed contribution guidelines, please check our documentation or reach out to the maintainers.
204+
149205
## Bounty program
150206
You can be rewarded by finding security issues. Please refer to our [bounty program page](https://neo.org/bounty) for more information.
151207

0 commit comments

Comments
 (0)