gitextract_sojddt40/ ├── .circleci/ │ ├── config.yml │ └── xunit-junit.xslt ├── .config/ │ └── dotnet-tools.json ├── .devcontainer/ │ ├── Dockerfile │ └── devcontainer.json ├── .dockerignore ├── .editorconfig ├── .gitallowed ├── .gitattributes ├── .github/ │ ├── auto_assign.yml │ ├── bin/ │ │ ├── bundle.sh │ │ ├── constants.sh │ │ ├── dist-github-release.sh │ │ ├── dist-npm.sh │ │ ├── dist-nuget.sh │ │ ├── dist-pack.sh │ │ ├── dist-release-note.sh │ │ └── github-release.sh │ ├── stale.yml │ └── workflows/ │ ├── benchmarks-merged.yml │ ├── benchmarks-pr.yml │ ├── build.yaml │ ├── check-build.yaml │ ├── check-changelog.yml │ ├── delete-old-artifacts.yml │ ├── docs.yml │ ├── lint.yml │ ├── push-docker-image.yml │ ├── rebase.yml │ └── yarn.yaml ├── .gitignore ├── .idea/ │ └── .idea.Libplanet/ │ └── .idea/ │ ├── .name │ └── vcs.xml ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── .yarn/ │ ├── releases/ │ │ └── yarn-4.0.1.cjs │ └── sdks/ │ ├── integrations.yml │ └── typescript/ │ ├── lib/ │ │ ├── tsc.js │ │ ├── tsserver.js │ │ ├── tsserverlibrary.js │ │ └── typescript.js │ └── package.json ├── .yarnrc.yml ├── @planetarium/ │ ├── .editorconfig │ ├── .gitignore │ ├── account/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── global.d.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Account.ts │ │ │ ├── Address.ts │ │ │ ├── KeyStore.ts │ │ │ ├── Message.ts │ │ │ ├── PublicKey.ts │ │ │ ├── RawPrivateKey.ts │ │ │ ├── Signature.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ ├── Account.test.ts │ │ │ ├── Address.test.ts │ │ │ ├── Message.test.ts │ │ │ ├── PublicKey.test.ts │ │ │ ├── RawPrivateKey.test.ts │ │ │ ├── Signature.test.ts │ │ │ ├── setup.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── account-aws-kms/ │ │ ├── .gitignore │ │ ├── CONTRIBUTING.md │ │ ├── README.md │ │ ├── examples/ │ │ │ └── cli.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── AwsKmsAccount.ts │ │ │ ├── AwsKmsKeyId.ts │ │ │ ├── AwsKmsKeyStore.ts │ │ │ ├── AwsKmsMetadata.ts │ │ │ ├── asn1.ts │ │ │ ├── crypto/ │ │ │ │ ├── browser.ts │ │ │ │ └── node.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ ├── AwsKmsKeyStore.test.ts │ │ │ └── asn1.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── account-web3-secret-storage/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── examples/ │ │ │ └── cli.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── KeyId.ts │ │ │ ├── PassphraseEntry.ts │ │ │ ├── TtyPassphraseEntry.ts │ │ │ ├── Web3Account.ts │ │ │ ├── Web3KeyStore.ts │ │ │ ├── crypto/ │ │ │ │ ├── browser.ts │ │ │ │ └── node.ts │ │ │ ├── fs/ │ │ │ │ ├── browser.ts │ │ │ │ └── node.ts │ │ │ ├── index.ts │ │ │ └── path/ │ │ │ ├── browser.ts │ │ │ └── node.ts │ │ ├── test/ │ │ │ ├── KeyId.test.ts │ │ │ ├── MockPassphraseEntry.ts │ │ │ ├── TtyPassphraseEntry.test.ts │ │ │ ├── Web3Account.test.ts │ │ │ ├── Web3KeyStore.test.ts │ │ │ └── fixtures/ │ │ │ ├── DO_NOT_USE_PRIVATE_KEYS_IN_THIS_DIR │ │ │ ├── UTC--2023-03-14T07-05-42Z--babfe5e0-f0f1-4f51-8b8e-97f1a461c690 │ │ │ ├── UTC--2023-03-14T07-05-52Z--3b948485-9bd0-4149-9a36-59999b36abf3 │ │ │ └── insufficient-lengthed-keys/ │ │ │ └── UTC--2023-01-30T11-33-11Z--b35a2647-8581-43ff-a98e-6083dc952632 │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── tx/ │ ├── .gitignore │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── address.ts │ │ ├── assets.ts │ │ ├── binary.ts │ │ ├── blockhash.ts │ │ ├── bytes.ts │ │ ├── index.ts │ │ ├── key.ts │ │ └── tx/ │ │ ├── index.ts │ │ ├── metadata.ts │ │ ├── signed.ts │ │ └── unsigned.ts │ ├── test/ │ │ ├── __snapshots__/ │ │ │ └── assets.test.ts.snap │ │ ├── address.test.ts │ │ ├── assets.test.ts │ │ ├── blockhash.test.ts │ │ ├── hex.ts │ │ ├── key.test.ts │ │ ├── setup.ts │ │ └── tx/ │ │ ├── __snapshots__/ │ │ │ └── metadata.test.ts.snap │ │ ├── fixtures.ts │ │ ├── metadata.test.ts │ │ ├── signed.test.ts │ │ └── unsigned.test.ts │ ├── tsconfig.json │ └── vitest.config.ts ├── CHANGES.md ├── CONTRIBUTING.md ├── Directory.Build.props ├── Dockerfile.explorer ├── Docs/ │ ├── .gitignore │ ├── api/ │ │ ├── .gitignore │ │ └── index.md │ ├── articles/ │ │ ├── design.md │ │ ├── overview.md │ │ └── toc.yml │ ├── build.ps1 │ ├── clean.ps1 │ ├── docfx.json │ ├── index.md │ ├── publish.sh │ ├── theme/ │ │ └── styles/ │ │ ├── main.css │ │ └── main.js │ └── toc.yml ├── LICENSE ├── Libplanet.Explorer.ruleset ├── Libplanet.Tests.ruleset ├── Libplanet.ruleset ├── Libplanet.sln ├── Libplanet.sln.DotSettings ├── Menees.Analyzers.Settings.xml ├── README.md ├── RELEASE.md ├── _typos.toml ├── changes/ │ ├── v0.md │ ├── v1.md │ ├── v2.md │ ├── v3.md │ ├── v4.md │ └── v5.md ├── codecov.yml ├── global.json ├── hooks/ │ ├── check-bom │ ├── check-changelog │ ├── check-projects │ ├── commit-msg │ ├── pre-commit │ └── validate-release ├── package.json ├── rome.json ├── scripts/ │ ├── .editorconfig │ └── determine-version.js ├── sdk/ │ ├── .editorconfig │ ├── Directory.Build.props │ ├── node/ │ │ ├── Libplanet.Node/ │ │ │ ├── Actions/ │ │ │ │ ├── PluginLoadContext.cs │ │ │ │ └── PluginLoader.cs │ │ │ ├── AssemblyInfo.cs │ │ │ ├── DataAnnotations/ │ │ │ │ ├── AddressAttribute.cs │ │ │ │ ├── AppProtocolVersionAttribute.cs │ │ │ │ ├── ArrayAttribute.cs │ │ │ │ ├── BoundPeerAttribute.cs │ │ │ │ ├── DnsEndPointAttribute.cs │ │ │ │ ├── PrivateKeyAttribute.cs │ │ │ │ └── PublicKeyAttribute.cs │ │ │ ├── EndPointUtility.cs │ │ │ ├── Libplanet.Node.csproj │ │ │ ├── Options/ │ │ │ │ ├── ActionOptions.cs │ │ │ │ ├── AppProtocolOptionsBase.cs │ │ │ │ ├── ConfigureNamedOptionsBase.cs │ │ │ │ ├── GenesisOptions.cs │ │ │ │ ├── GenesisOptionsConfigurator.cs │ │ │ │ ├── GenesisOptionsValidator.cs │ │ │ │ ├── OptionsAttribute.cs │ │ │ │ ├── OptionsBase.cs │ │ │ │ ├── OptionsConfiguratorBase.cs │ │ │ │ ├── OptionsValidatorBase.cs │ │ │ │ ├── Schema/ │ │ │ │ │ ├── OptionsSchemaBuilder.cs │ │ │ │ │ └── OptionsSchemaGenerator.cs │ │ │ │ ├── SeedOptions.cs │ │ │ │ ├── SeedOptionsConfigurator.cs │ │ │ │ ├── SoloOptions.cs │ │ │ │ ├── SoloOptionsConfigurator.cs │ │ │ │ ├── StoreOptions.cs │ │ │ │ ├── StoreOptionsConfigurator.cs │ │ │ │ ├── StoreType.cs │ │ │ │ ├── SwarmOptions.cs │ │ │ │ ├── SwarmOptionsConfigurator.cs │ │ │ │ ├── SwarmOptionsValidator.cs │ │ │ │ ├── ValidatorOptions.cs │ │ │ │ ├── ValidatorOptionsConfigurator.cs │ │ │ │ └── ValidatorOptionsValidator.cs │ │ │ ├── README.md │ │ │ ├── ServiceUtility.cs │ │ │ └── Services/ │ │ │ ├── ActionService.cs │ │ │ ├── BlockChainService.cs │ │ │ ├── IActionService.cs │ │ │ ├── IBlockChainService.cs │ │ │ ├── IBlocksyncSeedService.cs │ │ │ ├── IConsensusSeedService.cs │ │ │ ├── IReadChainService.cs │ │ │ ├── IRendererService.cs │ │ │ ├── IStoreService.cs │ │ │ ├── ISwarmService.cs │ │ │ ├── IValidatorService.cs │ │ │ ├── Peer.cs │ │ │ ├── PeerCollection.cs │ │ │ ├── PolicyService.cs │ │ │ ├── ReadChainService.cs │ │ │ ├── RenderActionErrorInfo.cs │ │ │ ├── RenderActionInfo.cs │ │ │ ├── RenderBlockInfo.cs │ │ │ ├── RendererService.cs │ │ │ ├── Seed.cs │ │ │ ├── SeedMessageEventArgs.cs │ │ │ ├── SeedServiceBase.cs │ │ │ ├── SoloProposeService.cs │ │ │ ├── StoreService.cs │ │ │ ├── SwarmService.cs │ │ │ ├── TransactionService.cs │ │ │ └── ValidatorService.cs │ │ ├── Libplanet.Node.Executable/ │ │ │ ├── BlockChainRendererTracer.cs │ │ │ ├── Dockerfile │ │ │ ├── Explorer/ │ │ │ │ ├── BlockChainContext.cs │ │ │ │ ├── ExplorerExtensions.cs │ │ │ │ └── ExplorerOptions.cs │ │ │ ├── Libplanet.Node.Executable.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── Protos/ │ │ │ │ ├── blockchain.proto │ │ │ │ ├── schema.proto │ │ │ │ └── seed.proto │ │ │ ├── Services/ │ │ │ │ ├── BlockchainGrpcServiceV1.cs │ │ │ │ ├── SchemaGrpcServiceV1.cs │ │ │ │ └── SeedGrpcService.cs │ │ │ ├── appsettings-schema.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── Libplanet.Node.Extensions/ │ │ │ ├── Libplanet.Node.Extensions.csproj │ │ │ ├── LibplanetServicesExtensions.cs │ │ │ └── NodeBuilder/ │ │ │ ├── ILibplanetNodeBuilder.cs │ │ │ └── LibplanetNodeBuilder.cs │ │ └── Libplanet.Node.Tests/ │ │ ├── AsyncDisposerCollection.cs │ │ ├── BlockChainUtility.cs │ │ ├── DisposerCollection.cs │ │ ├── DumbAction.cs │ │ ├── DumbActionLoader.cs │ │ ├── Libplanet.Node.Tests.csproj │ │ ├── Options/ │ │ │ └── OptionsBaseTest.cs │ │ ├── RandomBoundPeer.cs │ │ ├── RandomEndPoint.cs │ │ ├── RandomPrivateKey.cs │ │ ├── Services/ │ │ │ ├── ActionServiceTest.cs │ │ │ ├── ActionServiceTestSource.cs │ │ │ ├── BlockChainServiceTest.cs │ │ │ ├── PeerTest.cs │ │ │ ├── ReadChainServiceTest.cs │ │ │ ├── RendererServiceTest.cs │ │ │ ├── RuntimeCompiler.cs │ │ │ ├── SeedTest.cs │ │ │ ├── StoreServiceTest.cs │ │ │ ├── SwarmServiceTest.cs │ │ │ └── ValidatorServiceTest.cs │ │ ├── TempDirectoryFixture.cs │ │ ├── TestObserver.cs │ │ └── TestUtility.cs │ └── stylecop.json ├── src/ │ ├── Directory.Build.props │ ├── Libplanet/ │ │ ├── AssemblyInfo.cs │ │ ├── Blockchain/ │ │ │ ├── BlockChain.Evaluate.cs │ │ │ ├── BlockChain.Evidence.cs │ │ │ ├── BlockChain.ProposeBlock.cs │ │ │ ├── BlockChain.States.cs │ │ │ ├── BlockChain.Swap.cs │ │ │ ├── BlockChain.TxExecution.cs │ │ │ ├── BlockChain.Validate.cs │ │ │ ├── BlockChain.cs │ │ │ ├── BlockChainStates.cs │ │ │ ├── BlockLocator.cs │ │ │ ├── Branch.cs │ │ │ ├── MineBlockEventArgs.cs │ │ │ ├── Policies/ │ │ │ │ ├── BlockPolicy.cs │ │ │ │ ├── IBlockPolicy.cs │ │ │ │ ├── IStagePolicy.cs │ │ │ │ ├── NullBlockPolicy.cs │ │ │ │ └── VolatileStagePolicy.cs │ │ │ └── Renderers/ │ │ │ ├── AnonymousActionRenderer.cs │ │ │ ├── AnonymousRenderer.cs │ │ │ ├── Debug/ │ │ │ │ ├── InvalidRenderException.cs │ │ │ │ ├── RecordingActionRenderer.cs │ │ │ │ ├── RenderRecord.cs │ │ │ │ └── ValidatingActionRenderer.cs │ │ │ ├── IActionRenderer.cs │ │ │ ├── IRenderer.cs │ │ │ ├── LoggedActionRenderer.cs │ │ │ └── LoggedRenderer.cs │ │ ├── Consensus/ │ │ │ ├── Maj23.cs │ │ │ ├── Maj23Metadata.cs │ │ │ ├── Proposal.cs │ │ │ ├── ProposalClaim.cs │ │ │ ├── ProposalClaimMetadata.cs │ │ │ ├── ProposalMetadata.cs │ │ │ ├── VoteSetBits.cs │ │ │ └── VoteSetBitsMetadata.cs │ │ ├── KeyStore/ │ │ │ ├── Ciphers/ │ │ │ │ ├── Aes128Ctr.cs │ │ │ │ └── ICipher.cs │ │ │ ├── IKeyStore.cs │ │ │ ├── IncorrectPassphraseException.cs │ │ │ ├── InvalidKeyJsonException.cs │ │ │ ├── Kdfs/ │ │ │ │ ├── IKdf.cs │ │ │ │ ├── Pbkdf2.cs │ │ │ │ └── Scrypt.cs │ │ │ ├── KeyJsonException.cs │ │ │ ├── KeyStoreException.cs │ │ │ ├── MismatchedAddressException.cs │ │ │ ├── NoKeyException.cs │ │ │ ├── ProtectedPrivateKey.cs │ │ │ ├── UnsupportedKeyJsonException.cs │ │ │ └── Web3KeyStore.cs │ │ └── Libplanet.csproj │ ├── Libplanet.Action/ │ │ ├── AccountMetrics.cs │ │ ├── ActionContext.cs │ │ ├── ActionEvaluation.cs │ │ ├── ActionEvaluator.cs │ │ ├── ActionTypeAttribute.cs │ │ ├── ActionsExtensions.cs │ │ ├── AssemblyInfo.cs │ │ ├── BlockProtocolVersionNotSupportedException.cs │ │ ├── CommittedActionContext.cs │ │ ├── CommittedActionEvaluation.cs │ │ ├── DuplicateActionTypeIdentifierException.cs │ │ ├── GasLimitExceededException.cs │ │ ├── GasLimitNegativeException.cs │ │ ├── GasMeter.cs │ │ ├── GasTracer.cs │ │ ├── GasUseNegativeException.cs │ │ ├── IAction.cs │ │ ├── IActionContext.cs │ │ ├── IActionEvaluation.cs │ │ ├── IActionEvaluator.cs │ │ ├── IActionTypeLoaderContext.cs │ │ ├── ICommittedActionContext.cs │ │ ├── ICommittedActionEvaluation.cs │ │ ├── IGasMeter.cs │ │ ├── IPolicyActionsRegistry.cs │ │ ├── IRandom.cs │ │ ├── InvalidActionException.cs │ │ ├── Libplanet.Action.csproj │ │ ├── Loader/ │ │ │ ├── AggregateTypedActionLoader.cs │ │ │ ├── AssemblyActionLoader.cs │ │ │ ├── IActionLoader.cs │ │ │ ├── IndexedActionLoader.cs │ │ │ ├── SingleActionLoader.cs │ │ │ └── TypedActionLoader.cs │ │ ├── NullAction.cs │ │ ├── PolicyActionsRegistry.cs │ │ ├── Random.cs │ │ ├── RandomExtensions.cs │ │ ├── State/ │ │ │ ├── Account.cs │ │ │ ├── AccountDiff.cs │ │ │ ├── AccountState.cs │ │ │ ├── CurrencyAccount.cs │ │ │ ├── CurrencyPermissionException.cs │ │ │ ├── IAccount.cs │ │ │ ├── IAccountState.cs │ │ │ ├── IBlockChainStates.cs │ │ │ ├── IStateStoreExtensions.cs │ │ │ ├── IWorld.cs │ │ │ ├── IWorldDelta.cs │ │ │ ├── IWorldExtensions.cs │ │ │ ├── IWorldState.cs │ │ │ ├── InsufficientBalanceException.cs │ │ │ ├── KeyConverters.cs │ │ │ ├── ReservedAddresses.cs │ │ │ ├── SupplyOverflowException.cs │ │ │ ├── ValidatorSetAccount.cs │ │ │ ├── World.cs │ │ │ ├── WorldBaseState.cs │ │ │ └── WorldDelta.cs │ │ ├── Sys/ │ │ │ ├── Initialize.cs │ │ │ ├── Registry.cs │ │ │ └── SysActionJsonConverter.cs │ │ └── UnexpectedlyTerminatedActionException.cs │ ├── Libplanet.Common/ │ │ ├── ArrayEqualityComparer.cs │ │ ├── ByteArrayExtensions.cs │ │ ├── ByteUtil.cs │ │ ├── FixedSizedQueue.cs │ │ ├── HashDigest.cs │ │ ├── JsonConverters/ │ │ │ ├── BigIntegerJsonConverter.cs │ │ │ └── ByteArrayJsonConverter.cs │ │ ├── Libplanet.Common.csproj │ │ ├── NameValueCollectionExtensions.cs │ │ └── TimeSpanExtensions.cs │ ├── Libplanet.Crypto/ │ │ ├── Address.cs │ │ ├── CryptoConfig.cs │ │ ├── DefaultCryptoBackend.cs │ │ ├── GenerateKeyParamTriesExceedException.cs │ │ ├── ICryptoBackend.cs │ │ ├── InvalidCiphertextException.cs │ │ ├── Libplanet.Crypto.csproj │ │ ├── PrivateKey.cs │ │ ├── PublicKey.cs │ │ └── SymmetricKey.cs │ ├── Libplanet.Crypto.Secp256k1/ │ │ ├── Libplanet.Crypto.Secp256k1.csproj │ │ └── Secp256k1CryptoBackend.cs │ ├── Libplanet.Net/ │ │ ├── ActionExecutionState.cs │ │ ├── AppProtocolVersion.cs │ │ ├── AssemblyInfo.cs │ │ ├── AsyncDelegate.cs │ │ ├── BlockCandidateTable.cs │ │ ├── BlockDemand.cs │ │ ├── BlockDemandTable.cs │ │ ├── BlockDownloadState.cs │ │ ├── BlockHashDownloadState.cs │ │ ├── BlockSyncState.cs │ │ ├── BlockVerificationState.cs │ │ ├── BoundPeer.cs │ │ ├── Consensus/ │ │ │ ├── ConsensusContext.Event.cs │ │ │ ├── ConsensusContext.cs │ │ │ ├── ConsensusReactor.cs │ │ │ ├── ConsensusReactorOption.cs │ │ │ ├── ConsensusStep.cs │ │ │ ├── Context.Async.cs │ │ │ ├── Context.Event.cs │ │ │ ├── Context.Mutate.cs │ │ │ ├── Context.cs │ │ │ ├── ContextOption.cs │ │ │ ├── EvidenceExceptionCollector.cs │ │ │ ├── Gossip.cs │ │ │ ├── GossipConsensusMessageCommunicator.cs │ │ │ ├── HeightVoteSet.cs │ │ │ ├── IConsensusMessageCommunicator.cs │ │ │ ├── IReactor.cs │ │ │ ├── InvalidConsensusMessageException.cs │ │ │ ├── InvalidHeightIncreasingException.cs │ │ │ ├── InvalidMaj23Exception.cs │ │ │ ├── InvalidProposalException.cs │ │ │ ├── InvalidVoteException.cs │ │ │ ├── MessageCache.cs │ │ │ └── VoteSet.cs │ │ ├── DifferentAppProtocolVersionEncountered.cs │ │ ├── EvidenceCompletion.cs │ │ ├── IceServer.cs │ │ ├── InvalidMessageContentException.cs │ │ ├── InvalidStateTargetException.cs │ │ ├── Libplanet.Net.csproj │ │ ├── Messages/ │ │ │ ├── BlockHashesMsg.cs │ │ │ ├── BlockHeaderMsg.cs │ │ │ ├── BlocksMsg.cs │ │ │ ├── ChainStatusMsg.cs │ │ │ ├── ConsensusMaj23Msg.cs │ │ │ ├── ConsensusMsg.cs │ │ │ ├── ConsensusPreCommitMsg.cs │ │ │ ├── ConsensusPreVoteMsg.cs │ │ │ ├── ConsensusProposalClaimMsg.cs │ │ │ ├── ConsensusProposalMsg.cs │ │ │ ├── ConsensusVoteMsg.cs │ │ │ ├── ConsensusVoteSetBitsMsg.cs │ │ │ ├── DifferentVersionMsg.cs │ │ │ ├── EvidenceIdsMsg.cs │ │ │ ├── EvidenceMsg.cs │ │ │ ├── FindNeighborsMsg.cs │ │ │ ├── GetBlockHashesMsg.cs │ │ │ ├── GetBlocksMsg.cs │ │ │ ├── GetChainStatusMsg.cs │ │ │ ├── GetEvidenceMsg.cs │ │ │ ├── GetTxsMsg.cs │ │ │ ├── HaveMessage.cs │ │ │ ├── IMessageCodec.cs │ │ │ ├── Message.cs │ │ │ ├── MessageContent.cs │ │ │ ├── MessageId.cs │ │ │ ├── MessageValidator.cs │ │ │ ├── NeighborsMsg.cs │ │ │ ├── NetMQMessageCodec.cs │ │ │ ├── PingMsg.cs │ │ │ ├── PongMsg.cs │ │ │ ├── TxIdsMsg.cs │ │ │ ├── TxMsg.cs │ │ │ └── WantMessage.cs │ │ ├── NetMQFrameExtensions.cs │ │ ├── NoSwarmContextException.cs │ │ ├── NullableSemaphore.cs │ │ ├── Options/ │ │ │ ├── AppProtocolVersionOptions.cs │ │ │ ├── BootstrapOptions.cs │ │ │ ├── HostOptions.cs │ │ │ ├── PreloadOptions.cs │ │ │ ├── SwarmOptions.cs │ │ │ ├── TaskRegulationOptions.cs │ │ │ └── TimeoutOptions.cs │ │ ├── PeerChainState.cs │ │ ├── PeerNotFoundException.cs │ │ ├── PeerState.cs │ │ ├── Protocols/ │ │ │ ├── IProtocol.cs │ │ │ ├── IRoutingTable.cs │ │ │ ├── KBucket.cs │ │ │ ├── KBucketDictionary.cs │ │ │ ├── Kademlia.cs │ │ │ ├── KademliaProtocol.cs │ │ │ ├── PeerDiscoveryException.cs │ │ │ ├── PingTimeoutException.cs │ │ │ └── RoutingTable.cs │ │ ├── StateDownloadState.cs │ │ ├── Swarm.BlockCandidate.cs │ │ ├── Swarm.BlockSync.cs │ │ ├── Swarm.Evidence.cs │ │ ├── Swarm.MessageHandlers.cs │ │ ├── Swarm.cs │ │ ├── SwarmException.cs │ │ ├── Transports/ │ │ │ ├── BoundPeerExtensions.cs │ │ │ ├── CommunicationFailException.cs │ │ │ ├── DifferentAppProtocolVersionException.cs │ │ │ ├── ITransport.cs │ │ │ ├── InvalidCredentialException.cs │ │ │ ├── InvalidMessageSignatureException.cs │ │ │ ├── InvalidMessageTimestampException.cs │ │ │ ├── NetMQTransport.cs │ │ │ ├── SendMessageFailException.cs │ │ │ └── TransportException.cs │ │ └── TxCompletion.cs │ ├── Libplanet.RocksDBStore/ │ │ ├── Libplanet.RocksDBStore.csproj │ │ ├── RocksDBInstanceType.cs │ │ ├── RocksDBKeyValueStore.cs │ │ ├── RocksDBStore.Prune.cs │ │ ├── RocksDBStore.cs │ │ ├── RocksDBStoreBitConverter.cs │ │ └── RocksDBUtils.cs │ ├── Libplanet.Store/ │ │ ├── AssemblyInfo.cs │ │ ├── BaseStore.cs │ │ ├── BlockDigest.cs │ │ ├── BlockSet.cs │ │ ├── DataModel.Decode.cs │ │ ├── DataModel.Encode.cs │ │ ├── DataModel.cs │ │ ├── DefaultStore.cs │ │ ├── HashNodeCache.cs │ │ ├── IStateStore.cs │ │ ├── IStore.cs │ │ ├── Libplanet.Store.csproj │ │ ├── MemoryStore.cs │ │ ├── StoreExtensions.cs │ │ ├── StoreLoader.cs │ │ ├── StoreLoaderAttribute.cs │ │ ├── Trie/ │ │ │ ├── CacheableKeyValueStore.cs │ │ │ ├── DefaultKeyValueStore.cs │ │ │ ├── IKeyValueStore.cs │ │ │ ├── ITrie.cs │ │ │ ├── InvalidTrieNodeException.cs │ │ │ ├── KeyBytes.cs │ │ │ ├── MemoryKeyValueStore.cs │ │ │ ├── MerkleTrie.Diff.cs │ │ │ ├── MerkleTrie.Insert.cs │ │ │ ├── MerkleTrie.Path.cs │ │ │ ├── MerkleTrie.Proof.cs │ │ │ ├── MerkleTrie.Remove.cs │ │ │ ├── MerkleTrie.cs │ │ │ ├── Nibbles.cs │ │ │ ├── Nodes/ │ │ │ │ ├── FullNode.cs │ │ │ │ ├── HashNode.cs │ │ │ │ ├── INode.cs │ │ │ │ ├── INodeExtensions.cs │ │ │ │ ├── NodeDecoder.cs │ │ │ │ ├── ShortNode.cs │ │ │ │ └── ValueNode.cs │ │ │ ├── PathCursor.cs │ │ │ ├── TrieExtensions.cs │ │ │ └── TrieMetadata.cs │ │ ├── TrieStateStore.Commit.cs │ │ └── TrieStateStore.cs │ ├── Libplanet.Store.Remote/ │ │ ├── Client/ │ │ │ └── RemoteKeyValueStore.cs │ │ ├── Extensions/ │ │ │ ├── ByteStringExtensions.cs │ │ │ ├── KeyBytesExtensions.cs │ │ │ └── ProtoMessageExtensions.cs │ │ ├── Libplanet.Store.Remote.csproj │ │ ├── Protos/ │ │ │ ├── Requests/ │ │ │ │ └── key_value_requests.proto │ │ │ ├── Responses/ │ │ │ │ └── key_value_responses.proto │ │ │ ├── Types/ │ │ │ │ └── pair.proto │ │ │ └── kvstore.proto │ │ ├── README.md │ │ └── Server/ │ │ ├── RemoteKeyValueService.cs │ │ └── Startup.cs │ ├── Libplanet.Stun/ │ │ ├── AssemblyInfo.cs │ │ ├── IIceServer.cs │ │ ├── IceServerException.cs │ │ ├── Libplanet.Stun.csproj │ │ └── Stun/ │ │ ├── Attributes/ │ │ │ ├── Attribute.cs │ │ │ ├── ConnectionId.cs │ │ │ ├── ErrorCode.cs │ │ │ ├── Fingerprint.cs │ │ │ ├── InvalidStunAddressException.cs │ │ │ ├── Lifetime.cs │ │ │ ├── MessageIntegrity.cs │ │ │ ├── Nonce.cs │ │ │ ├── Realm.cs │ │ │ ├── RequestedTransport.cs │ │ │ ├── Software.cs │ │ │ ├── StunAddressExtensions.cs │ │ │ ├── Username.cs │ │ │ ├── XorMappedAddress.cs │ │ │ ├── XorPeerAddress.cs │ │ │ └── XorRelayedAddress.cs │ │ ├── BytesConvertExtensions.cs │ │ ├── Crc32.cs │ │ ├── IStunContext.cs │ │ ├── Messages/ │ │ │ ├── AllocateErrorResponse.cs │ │ │ ├── AllocateRequest.cs │ │ │ ├── AllocateSuccessResponse.cs │ │ │ ├── BindingRequest.cs │ │ │ ├── BindingSuccessResponse.cs │ │ │ ├── ConnectRequest.cs │ │ │ ├── ConnectSuccessResponse.cs │ │ │ ├── ConnectionAttempt.cs │ │ │ ├── ConnectionBindRequest.cs │ │ │ ├── ConnectionBindSuccessResponse.cs │ │ │ ├── CreatePermissionErrorResponse.cs │ │ │ ├── CreatePermissionRequest.cs │ │ │ ├── CreatePermissionSuccessResponse.cs │ │ │ ├── RefreshErrorResponse.cs │ │ │ ├── RefreshRequest.cs │ │ │ ├── RefreshSuccessResponse.cs │ │ │ └── StunMessage.cs │ │ ├── TurnClient.cs │ │ └── TurnClientException.cs │ └── Libplanet.Types/ │ ├── AssemblyInfo.cs │ ├── Assets/ │ │ ├── Currency.cs │ │ └── FungibleAssetValue.cs │ ├── Blocks/ │ │ ├── Block.cs │ │ ├── BlockCommit.cs │ │ ├── BlockContent.cs │ │ ├── BlockExcerptExtensions.cs │ │ ├── BlockHash.cs │ │ ├── BlockHeader.cs │ │ ├── BlockMarshaler.cs │ │ ├── BlockMetadata.cs │ │ ├── BlockPolicyViolationException.cs │ │ ├── IBlockContent.cs │ │ ├── IBlockExcerpt.cs │ │ ├── IBlockHeader.cs │ │ ├── IBlockMetadata.cs │ │ ├── IBlockMetadataExtensions.cs │ │ ├── IPreEvaluationBlock.cs │ │ ├── IPreEvaluationBlockHeader.cs │ │ ├── InvalidBlockBytesLengthException.cs │ │ ├── InvalidBlockCommitException.cs │ │ ├── InvalidBlockEvidenceHashException.cs │ │ ├── InvalidBlockEvidencePendingDurationException.cs │ │ ├── InvalidBlockException.cs │ │ ├── InvalidBlockHashException.cs │ │ ├── InvalidBlockIndexException.cs │ │ ├── InvalidBlockLastCommitException.cs │ │ ├── InvalidBlockPreEvaluationHashException.cs │ │ ├── InvalidBlockPreviousHashException.cs │ │ ├── InvalidBlockProtocolVersionException.cs │ │ ├── InvalidBlockPublicKeyException.cs │ │ ├── InvalidBlockSignatureException.cs │ │ ├── InvalidBlockStateRootHashException.cs │ │ ├── InvalidBlockTimestampException.cs │ │ ├── InvalidBlockTxCountException.cs │ │ ├── InvalidBlockTxCountPerSignerException.cs │ │ ├── InvalidBlockTxHashException.cs │ │ ├── InvalidGenesisBlockException.cs │ │ ├── PreEvaluationBlock.cs │ │ └── PreEvaluationBlockHeader.cs │ ├── Consensus/ │ │ ├── IVoteMetadata.cs │ │ ├── Validator.cs │ │ ├── ValidatorSet.cs │ │ ├── Vote.cs │ │ ├── VoteFlag.cs │ │ └── VoteMetadata.cs │ ├── Evidence/ │ │ ├── DuplicateVoteEvidence.cs │ │ ├── DuplicateVoteException.cs │ │ ├── EvidenceBase.cs │ │ ├── EvidenceContext.cs │ │ ├── EvidenceException.cs │ │ ├── EvidenceId.cs │ │ ├── EvidenceIdComparer.cs │ │ ├── IEvidenceContext.cs │ │ ├── InvalidEvidenceException.cs │ │ └── UnknownEvidence.cs │ ├── Libplanet.Types.csproj │ └── Tx/ │ ├── AddressSet.cs │ ├── ITransaction.cs │ ├── ITxInvoice.cs │ ├── ITxSigningMetadata.cs │ ├── IUnsignedTx.cs │ ├── InvalidTxException.cs │ ├── InvalidTxGenesisHashException.cs │ ├── InvalidTxIdException.cs │ ├── InvalidTxNonceException.cs │ ├── InvalidTxSignatureException.cs │ ├── Transaction.cs │ ├── TransactionExtensions.cs │ ├── TxActionList.cs │ ├── TxExecution.cs │ ├── TxId.cs │ ├── TxInvoice.cs │ ├── TxMarshaler.cs │ ├── TxMetadata.cs │ ├── TxPolicyViolationException.cs │ ├── TxSigningMetadata.cs │ └── UnsignedTx.cs ├── stylecop.json ├── test/ │ ├── Directory.Build.props │ ├── Libplanet.Action.Tests/ │ │ ├── ActionContextTest.cs │ │ ├── ActionEvaluationTest.cs │ │ ├── ActionTypeAttributeTest.cs │ │ ├── Common/ │ │ │ ├── Attack.cs │ │ │ ├── BaseAction.cs │ │ │ ├── BattleResult.cs │ │ │ ├── ContextRecordingAction.cs │ │ │ ├── Currencies.cs │ │ │ ├── DelayAction.cs │ │ │ ├── DumbAction.cs │ │ │ ├── DumbModernAction.cs │ │ │ ├── MinerReward.cs │ │ │ ├── SetStatesAtBlock.cs │ │ │ ├── SetValidator.cs │ │ │ ├── Sleep.cs │ │ │ ├── ThrowException.cs │ │ │ └── UpdateValueAction.cs │ │ ├── DuplicateActionTypeIdentifierExceptionTest.cs │ │ ├── Libplanet.Action.Tests.csproj │ │ ├── Loader/ │ │ │ ├── IndexedActionLoaderTest.cs │ │ │ ├── SingleActionLoaderTest.cs │ │ │ └── TypedActionLoaderTest.cs │ │ ├── RandomExtensions.cs │ │ ├── State/ │ │ │ ├── KeyConvertersTest.cs │ │ │ └── WorldBaseStateTest.cs │ │ ├── Sys/ │ │ │ ├── InitializeTest.cs │ │ │ └── RegistryTest.cs │ │ └── TestUtils.cs │ ├── Libplanet.Analyzers.Tests/ │ │ ├── ActionAnalyzerTest.cs │ │ ├── CSharpAnalysisFactAttribute.cs │ │ ├── Helpers/ │ │ │ ├── DiagnosticResult.cs │ │ │ └── DiagnosticResultLocation.cs │ │ ├── Libplanet.Analyzers.Tests.csproj │ │ └── Verifiers/ │ │ ├── CSharpAnalysisTheoryAttribute.cs │ │ ├── DiagnosticVerifier.Helper.cs │ │ └── DiagnosticVerifier.cs │ ├── Libplanet.Crypto.Secp256k1.Tests/ │ │ ├── Libplanet.Crypto.Secp256k1.Tests.csproj │ │ └── Secp256k1CryptoBackendTest.cs │ ├── Libplanet.Explorer.Cocona.Tests/ │ │ ├── Commands/ │ │ │ └── IndexCommandTest.cs │ │ └── Libplanet.Explorer.Cocona.Tests.csproj │ ├── Libplanet.Explorer.Tests/ │ │ ├── Fixtures/ │ │ │ └── BlockChainStatesFixture.cs │ │ ├── GeneratedBlockChainFixture.cs │ │ ├── GraphQLTestUtils.cs │ │ ├── GraphTypes/ │ │ │ ├── AddressTypeTest.cs │ │ │ ├── BlockCommitTypeTest.cs │ │ │ ├── BlockHashTypeTest.cs │ │ │ ├── BlockTypeTest.cs │ │ │ ├── ByteStringTypeTest.cs │ │ │ ├── CurrencyInputTypeTest.cs │ │ │ ├── CurrencyTypeTest.cs │ │ │ ├── FungibleAssetValueTypeTest.cs │ │ │ ├── HashDigestTypeTest.cs │ │ │ ├── PublicKeyTypeTest.cs │ │ │ ├── ScalarGraphTypeTestBase.cs │ │ │ ├── TransactionTypeTest.cs │ │ │ ├── TxIdTypeTest.cs │ │ │ ├── TxResultTypeTest.cs │ │ │ └── VoteTypeTest.cs │ │ ├── Indexing/ │ │ │ ├── BlockChainIndexFixture.cs │ │ │ ├── BlockChainIndexTest.cs │ │ │ ├── IBlockChainIndexFixture.cs │ │ │ ├── RocksDbBlockChainIndexFixture.cs │ │ │ └── RocksDbBlockChainIndexTest.cs │ │ ├── Libplanet.Explorer.Tests.csproj │ │ ├── Queries/ │ │ │ ├── HelperQueryTest.cs │ │ │ ├── MockBlockChainContext.cs │ │ │ ├── MockBlockChainContextWithIndex.cs │ │ │ ├── RawStateQueryTest.cs │ │ │ ├── StateQueryTest.Legacy.cs │ │ │ ├── StateQueryTest.cs │ │ │ ├── TransactionQueryGeneratedTest.cs │ │ │ ├── TransactionQueryGeneratedWithIndexTest.cs │ │ │ ├── TransactionQueryTest.cs │ │ │ └── TransactionQueryWithIndexTest.cs │ │ ├── SimpleAction.cs │ │ └── TestUtils.cs │ ├── Libplanet.Extensions.Cocona.Tests/ │ │ ├── AssemblyInfo.cs │ │ ├── BlockPolicyParamsTest.cs │ │ ├── Commands/ │ │ │ ├── MptCommandTest.cs │ │ │ ├── StatsCommandTest.cs │ │ │ ├── StoreCommandTest.cs │ │ │ └── TxCommandTest.cs │ │ ├── Libplanet.Extensions.Cocona.Tests.csproj │ │ ├── Services/ │ │ │ └── TestToolConfigurationService.cs │ │ └── UtilsTest.cs │ ├── Libplanet.Mocks/ │ │ ├── Libplanet.Mocks.csproj │ │ ├── MockBlockChainStates.cs │ │ ├── MockUtil.cs │ │ └── MockWorldState.cs │ ├── Libplanet.Net.Tests/ │ │ ├── AppProtocolVersionTest.cs │ │ ├── BlockCandidateTableTest.cs │ │ ├── BoundPeerTest.cs │ │ ├── Consensus/ │ │ │ ├── ConsensusContextNonProposerTest.cs │ │ │ ├── ConsensusContextProposerTest.cs │ │ │ ├── ConsensusContextTest.cs │ │ │ ├── ConsensusContextUtils.cs │ │ │ ├── ConsensusReactorTest.cs │ │ │ ├── ContextNonProposerTest.cs │ │ │ ├── ContextProposerTest.cs │ │ │ ├── ContextProposerValidRoundTest.cs │ │ │ ├── ContextTest.cs │ │ │ ├── DuplicateVoteEvidenceTest.cs │ │ │ ├── GossipConsensusMessageCommunicatorTest.cs │ │ │ ├── GossipTest.cs │ │ │ ├── HeightVoteSetTest.cs │ │ │ ├── MessageCacheTest.cs │ │ │ └── VoteSetTest.cs │ │ ├── FactOnlyTurnAvailableAttribute.cs │ │ ├── IceServerTest.cs │ │ ├── Libplanet.Net.Tests.csproj │ │ ├── Messages/ │ │ │ ├── BlockHashesTest.cs │ │ │ ├── MessageIdTest.cs │ │ │ ├── MessageTest.cs │ │ │ ├── MessageValidatorTest.cs │ │ │ └── NetMQMessageCodecTest.cs │ │ ├── NullableSemaphoreTest.cs │ │ ├── Options/ │ │ │ └── HostOptionsTest.cs │ │ ├── Protocols/ │ │ │ ├── KBucketDictionaryTest.cs │ │ │ ├── KBucketTest.cs │ │ │ ├── ProtocolTest.cs │ │ │ ├── RoutingTableTest.cs │ │ │ ├── TestMessage.cs │ │ │ └── TestTransport.cs │ │ ├── SwarmTest.AppProtocolVersion.cs │ │ ├── SwarmTest.Broadcast.cs │ │ ├── SwarmTest.Consensus.cs │ │ ├── SwarmTest.Evidence.cs │ │ ├── SwarmTest.Fixtures.cs │ │ ├── SwarmTest.Preload.cs │ │ ├── SwarmTest.cs │ │ ├── TestUtils.cs │ │ ├── Transports/ │ │ │ ├── BoundPeerExtensionsTest.cs │ │ │ ├── NetMQTransportTest.cs │ │ │ └── TransportTest.cs │ │ └── xunit.runner.mono.json │ ├── Libplanet.RocksDBStore.Tests/ │ │ ├── Libplanet.RocksDBStore.Tests.csproj │ │ ├── RocksDBKeyValueStoreTest.cs │ │ ├── RocksDBStoreBlockChainTest.cs │ │ ├── RocksDBStoreFixture.cs │ │ └── RocksDBStoreTest.cs │ ├── Libplanet.Store.Remote.Tests/ │ │ ├── Helpers/ │ │ │ ├── LoggerHelper.cs │ │ │ ├── RemoteKeyValueServiceExtensions.cs │ │ │ └── TestServerCallContextHelper.cs │ │ ├── Integrations/ │ │ │ └── ServiceIntegration.cs │ │ ├── Libplanet.Store.Remote.Tests.csproj │ │ ├── Units/ │ │ │ ├── ServiceUnit.cs │ │ │ └── StoreUnit.cs │ │ └── Usings.cs │ ├── Libplanet.Stun.Tests/ │ │ ├── Libplanet.Stun.Tests.csproj │ │ ├── Stun/ │ │ │ ├── Attributes/ │ │ │ │ ├── ErrorCodeTest.cs │ │ │ │ ├── LifetimeTest.cs │ │ │ │ ├── MessageIntegrityTest.cs │ │ │ │ ├── NonceTest.cs │ │ │ │ ├── RealmTest.cs │ │ │ │ ├── RequestedTransportTest.cs │ │ │ │ ├── StunAddressExtensionsTest.cs │ │ │ │ └── UserNameTest.cs │ │ │ ├── Crc32Test.cs │ │ │ └── Messages/ │ │ │ ├── AllocateErrorResponseTest.cs │ │ │ ├── AllocateRequestTest.cs │ │ │ ├── AllocateSuccessResponseTest.cs │ │ │ ├── BindingRequestSuccessTest.cs │ │ │ ├── BindingRequestTest.cs │ │ │ ├── ConnectionAttemptTest.cs │ │ │ ├── ConnectionBindRequestTest.cs │ │ │ ├── ConnectionBindSuccessResponseTest.cs │ │ │ ├── CreatePermissionRequestTest.cs │ │ │ ├── CreatePermissionSuccessResponseTest.cs │ │ │ ├── RefreshErrorResponseTest.cs │ │ │ ├── RefreshRequestTest.cs │ │ │ ├── RefreshSuccessResponseTest.cs │ │ │ ├── StunMessageTest.cs │ │ │ └── TestStunContext.cs │ │ └── xunit.runner.mono.json │ └── Libplanet.Tests/ │ ├── Action/ │ │ ├── AccountDiffTest.cs │ │ ├── AccountTest.cs │ │ ├── ActionEvaluatorTest.GasTracer.cs │ │ ├── ActionEvaluatorTest.Migration.cs │ │ ├── ActionEvaluatorTest.cs │ │ ├── WorldTest.cs │ │ ├── WorldV0Test.cs │ │ ├── WorldV1Test.cs │ │ ├── WorldV5Test.cs │ │ ├── WorldV6Test.cs │ │ └── WorldV7Test.cs │ ├── ActionProgress.cs │ ├── AddressTest.cs │ ├── AnonymousComparer.cs │ ├── ArrayEqualityComparerTest.cs │ ├── Assets/ │ │ ├── CurrencyTest.cs │ │ └── FungibleAssetValueTest.cs │ ├── BlockChainExtensions.cs │ ├── Blockchain/ │ │ ├── BlockChainTest.Append.cs │ │ ├── BlockChainTest.Evidence.cs │ │ ├── BlockChainTest.Internals.cs │ │ ├── BlockChainTest.ProposeBlock.cs │ │ ├── BlockChainTest.Stage.cs │ │ ├── BlockChainTest.ValidateNextBlock.cs │ │ ├── BlockChainTest.cs │ │ ├── BranchTest.cs │ │ ├── DefaultStoreBlockChainTest.cs │ │ ├── Evidence/ │ │ │ ├── DuplicateVoteEvidenceTest.cs │ │ │ ├── EvidenceIdTest.cs │ │ │ ├── EvidenceTest.cs │ │ │ ├── TestEvidence.cs │ │ │ └── UnknownEvidenceTest.cs │ │ ├── Policies/ │ │ │ ├── BlockPolicyTest.cs │ │ │ ├── StagePolicyTest.cs │ │ │ └── VolatileStagePolicyTest.cs │ │ ├── Renderers/ │ │ │ ├── AnonymousActionRendererTest.cs │ │ │ ├── AnonymousRendererTest.cs │ │ │ ├── LoggedActionRendererTest.cs │ │ │ └── LoggedRendererTest.cs │ │ └── TotalDifficultyComparerTest.cs │ ├── Blocks/ │ │ ├── BlockCommitTest.cs │ │ ├── BlockContentTest.cs │ │ ├── BlockFixture.cs │ │ ├── BlockHashTest.cs │ │ ├── BlockHeaderTest.cs │ │ ├── BlockMarshalerTest.Legacy.cs │ │ ├── BlockMarshalerTest.cs │ │ ├── BlockMetadataExtensionsTest.cs │ │ ├── BlockMetadataTest.cs │ │ ├── BlockTest.cs │ │ ├── PreEvaluationBlockHeaderTest.cs │ │ ├── PreEvaluationBlockTest.cs │ │ └── SimpleBlockExcerpt.cs │ ├── ByteArrayExtensionsTest.cs │ ├── ByteUtilTest.cs │ ├── Consensus/ │ │ ├── Maj23MetadataTest.cs │ │ ├── Maj23Test.cs │ │ ├── ProposalClaimMetadataTest.cs │ │ ├── ProposalClaimTest.cs │ │ ├── ProposalMetadataTest.cs │ │ ├── ProposalTest.cs │ │ ├── ValidatorSetTest.cs │ │ ├── ValidatorTest.cs │ │ ├── VoteMetadataTest.cs │ │ ├── VoteSetBitsMetadataTest.cs │ │ ├── VoteSetBitsTest.cs │ │ └── VoteTest.cs │ ├── Crypto/ │ │ ├── PrivateKeyTest.cs │ │ ├── PublicKeyTest.cs │ │ └── SymmetricKeyTest.cs │ ├── EnumerableShim.cs │ ├── Fixtures/ │ │ ├── Arithmetic.cs │ │ ├── BlockContentFixture.cs │ │ ├── IntegerSet.cs │ │ ├── LegacyBlocks.cs │ │ ├── OperatorType.cs │ │ └── OperatorTypeExtensions.cs │ ├── HashDigestTest.cs │ ├── HashSetExtensions.cs │ ├── ImmutableArrayEqualityComparer.cs │ ├── JsonConverters/ │ │ ├── BigIntegerJsonConverterTest.cs │ │ └── ByteArrayJsonConverterTest.cs │ ├── KeyStore/ │ │ ├── Ciphers/ │ │ │ ├── Aes128CtrTest.cs │ │ │ └── CipherTest.cs │ │ ├── IncorrectPassphraseExceptionTest.cs │ │ ├── Kdfs/ │ │ │ ├── KdfTest.cs │ │ │ ├── Pbkdf2Test.cs │ │ │ └── ScryptTest.cs │ │ ├── KeyStoreTest.cs │ │ ├── MismatchedAddressExceptionTest.cs │ │ ├── ProtectedPrivateKeyTest.cs │ │ └── Web3KeyStoreTest.cs │ ├── Libplanet.Tests.csproj │ ├── LoggerExtensions.cs │ ├── Menees.Analyzers.Settings.xml │ ├── NameValueCollectionExtensionsTest.cs │ ├── RandomExtensions.cs │ ├── Store/ │ │ ├── BaseTracker.cs │ │ ├── BlockSetTest.cs │ │ ├── DataModelTest.cs │ │ ├── DefaultStoreFixture.cs │ │ ├── DefaultStoreTest.cs │ │ ├── MemoryStoreFixture.cs │ │ ├── MemoryStoreTest.cs │ │ ├── ProxyStore.cs │ │ ├── StateStoreTracker.cs │ │ ├── StoreFixture.cs │ │ ├── StoreLoaderAttributeTest.cs │ │ ├── StoreTest.cs │ │ ├── StoreTrackLog.cs │ │ ├── StoreTracker.cs │ │ ├── StoreTrackerTest.cs │ │ ├── Trie/ │ │ │ ├── BytesEqualityComparer.cs │ │ │ ├── CacheableKeyValueStoreTest.cs │ │ │ ├── DefaultKeyValueStoreTest.cs │ │ │ ├── KeyBytesTest.cs │ │ │ ├── KeyValueStoreTest.cs │ │ │ ├── MerkleTrieDiffTest.cs │ │ │ ├── MerkleTrieProofTest.cs │ │ │ ├── MerkleTrieTest.cs │ │ │ ├── NibblesTest.cs │ │ │ ├── Nodes/ │ │ │ │ ├── FullNodeTest.cs │ │ │ │ ├── HashNodeTest.cs │ │ │ │ ├── NodeDecoderTest.cs │ │ │ │ ├── ShortNodeTest.cs │ │ │ │ └── ValueNodeTest.cs │ │ │ ├── PathCursorTest.cs │ │ │ ├── TrieMetadataTest.cs │ │ │ └── TrieTest.cs │ │ ├── TrieStateStoreCommitTest.cs │ │ └── TrieStateStoreTest.cs │ ├── TestUtils.cs │ ├── TimeSpanExtensionsTest.cs │ ├── Tx/ │ │ ├── AddressSetTest.cs │ │ ├── TransactionExtensionsTest.cs │ │ ├── TransactionTest.cs │ │ ├── TxActionListTest.cs │ │ ├── TxExecutionTest.cs │ │ ├── TxFixture.cs │ │ ├── TxIdTest.cs │ │ ├── TxInvoiceTest.cs │ │ ├── TxMarshalerTest.cs │ │ ├── TxMetadataTest.cs │ │ ├── TxSigningMetadataTest.cs │ │ ├── TxSigningMetadataTest.ts │ │ └── UnsignedTxTest.cs │ └── xunit.runner.mono.json └── tools/ ├── Directory.Build.props ├── Libplanet.Analyzers/ │ ├── ActionAnalyzer.cs │ ├── Libplanet.Analyzers.csproj │ ├── README.md │ ├── rules/ │ │ ├── LAA1001.md │ │ └── LAA1002.md │ └── tools/ │ ├── README │ ├── install.ps1 │ └── uninstall.ps1 ├── Libplanet.Benchmarks/ │ ├── AppendBlock.cs │ ├── BlockChain.cs │ ├── Commit.cs │ ├── DataModel/ │ │ ├── DataModelBenchmark.LeafModel.cs │ │ ├── DataModelBenchmark.MidModel.cs │ │ ├── DataModelBenchmark.RootModel.cs │ │ └── DataModelBenchmark.cs │ ├── Libplanet.Benchmarks.csproj │ ├── Program.cs │ ├── ProposeBlock.cs │ └── Store.cs ├── Libplanet.Explorer/ │ ├── AssemblyInfo.cs │ ├── ExplorerStartup.cs │ ├── GraphTypes/ │ │ ├── AccountStateType.cs │ │ ├── ActionType.cs │ │ ├── AddressType.cs │ │ ├── BencodexValueType.cs │ │ ├── BlockCommitType.cs │ │ ├── BlockHashType.cs │ │ ├── BlockType.cs │ │ ├── BoundPeerType.cs │ │ ├── ByteStringType.cs │ │ ├── CurrencyInputType.cs │ │ ├── CurrencyType.cs │ │ ├── EvidenceIdType.cs │ │ ├── EvidenceType.cs │ │ ├── FungibleAssetValueType.cs │ │ ├── HashDigestSHA256Type.cs │ │ ├── HashDigestType.cs │ │ ├── IValueType.cs │ │ ├── KeyBytesType.cs │ │ ├── NodeStateType.cs │ │ ├── PublicKeyType.cs │ │ ├── TransactionType.cs │ │ ├── TrieType.cs │ │ ├── TxIdType.cs │ │ ├── TxResult.cs │ │ ├── TxResultType.cs │ │ ├── TxStatusType.cs │ │ ├── ValidatorType.cs │ │ ├── VoteFlagType.cs │ │ ├── VoteType.cs │ │ └── WorldStateType.cs │ ├── Indexing/ │ │ ├── BlockChainIndexBase.cs │ │ ├── IBlockChainIndex.cs │ │ ├── IIndexingContext.cs │ │ ├── IndexMismatchException.cs │ │ ├── IndexingService.cs │ │ ├── RocksDbBlockChainIndex.cs │ │ └── RocksDbIndexingContext.cs │ ├── Interfaces/ │ │ └── IBlockChainContext.cs │ ├── Libplanet.Explorer.csproj │ ├── Mutations/ │ │ └── TransactionMutation.cs │ ├── Queries/ │ │ ├── BlockQuery.cs │ │ ├── EvidenceQuery.cs │ │ ├── ExplorerQuery.cs │ │ ├── HelperQuery.cs │ │ ├── RawStateQuery.cs │ │ ├── StateQuery.cs │ │ └── TransactionQuery.cs │ ├── README.md │ ├── Schemas/ │ │ └── LibplanetExplorerSchema.cs │ ├── k8s/ │ │ ├── deployment.yaml │ │ └── service.yaml │ ├── run.ps1 │ ├── schema.graphql │ └── sql/ │ └── initialize-rich-store.sql ├── Libplanet.Explorer.Cocona/ │ ├── AssemblyInfo.cs │ ├── Commands/ │ │ └── IndexCommand.cs │ └── Libplanet.Explorer.Cocona.csproj ├── Libplanet.Explorer.Executable/ │ ├── Exceptions/ │ │ └── InvalidOptionValueException.cs │ ├── Libplanet.Explorer.Executable.csproj │ ├── Options.cs │ ├── Program.cs │ └── wwwroot/ │ └── playground.html ├── Libplanet.Extensions.Cocona/ │ ├── AssemblyInfo.cs │ ├── BlockPolicyParams.cs │ ├── Commands/ │ │ ├── ApvCommand.cs │ │ ├── BlockCommand.cs │ │ ├── KeyCommand.cs │ │ ├── MptCommand.cs │ │ ├── StatsCommand.cs │ │ ├── StoreCommand.cs │ │ └── TxCommand.cs │ ├── Configuration/ │ │ ├── MptConfiguration.cs │ │ └── ToolConfiguration.cs │ ├── ConsolePasswordReader.cs │ ├── Extensions/ │ │ └── ICoconaLiteServiceCollectionExtensions.cs │ ├── Libplanet.Extensions.Cocona.csproj │ ├── PassphraseParameters.cs │ ├── Services/ │ │ ├── IConfigurationService.cs │ │ └── JsonConfigurationService.cs │ └── Utils.cs └── Libplanet.Tools/ ├── .gitignore ├── CONTRIBUTING.md ├── Libplanet.Tools.csproj ├── Program.cs ├── README.md ├── bin/ │ ├── npm-test.ps1 │ ├── npm-test.sh │ └── planet.mjs ├── download.mjs ├── install.mjs └── package.json