libplanet
libplanet copied to clipboard
Blockchain in C#/.NET for on-chain, decentralized gaming
Similar to #1879, simple usage of `Concurrent` data type is not enough to ensure concurrency of its owner, `BlockDemandTable`. As a side note, we might need some documentation to define...
Currently, `SwarmOptions` is simply a flat set of properties without any clear criteria as to why certain options are present and some are not, (see #1922). If we consider `Swarm`...
There are methods doing the similar thing in several places: - *Libplanet.Extensions.Cocona*: [`StatsCommand.LoadStoreFromUri()`](https://github.com/planetarium/libplanet/blob/0.19.1/Libplanet.Extensions.Cocona/Commands/StatsCommand.cs#L100-L129) method - *Libplanet.Extensions.Cocona*: [`StoreCommand.LoadStoreFromUri()`](https://github.com/planetarium/libplanet/blob/0.19.1/Libplanet.Extensions.Cocona/Commands/StoreCommand.cs#L206-L235) method - *Libplanet.Explorer.Executable*: [`Program.LoadStore()`](https://github.com/planetarium/libplanet/blob/0.19.1/Libplanet.Explorer.Executable/Program.cs#L280-L341) method What they do is to instantiate an implementation...
I found this issue while progressing on https://github.com/planetarium/NineChronicles.Headless/pull/1272. In [NinceChronicles.Headless](https://github.com/planetarium/NineChronicles.Headless) uses the Libplanet.Extensions.Cocona.commands wrapped once & use it because without need a dependency from the user's point of view. However,...
Related: #1146. To be elaborated.
Historically, at the very beginning, we had `Transaction.Sender`–`Transaction.Recipient` model, which was made after Bitcoin's or Ethereum's cryptocurrency model. In 0.2 release, we became to need “multiple recipients” because Libplanet is...
> Can we clarify it's use a bit more? > > As I understand it, seems like this is to "group" `UntypedTransaction` and `Transaction` for validating nonces. In any case,...
Currently no any validation for it, so block with random `LastCommit` value is a valid block and it harms PoS consensus.
Prevent `ITransport` from sending a `Message` to the same `Address` as `ITransport.AsPeer.Address`
There are several places where peers are filtered manually with something like ```csharp foreach (BoundPeer peer in peers.Where(peer => !peer.Address.Equals(_address))) ``` to sidestep sending a `Message` to itself. I think...
When you see the part of the document, you can see the exceptions' link like `InvalidOperationException` or `KeyNotFoundException`. ### Examples 1. `IAccountStateDelta` ([docs](https://docs.libplanet.io/0.39.0/api/Libplanet.Action.IAccountStateDelta.html), [code](https://github.com/planetarium/libplanet/blob/739f5f36f2ba9f4fa47424809d4c26ecb06104f8/Libplanet/Action/IAccountStateDelta.cs#L10-L38)) 1. `IStore.PruneOutdatedChains` ([docs](https://docs.libplanet.io/0.39.0/api/Libplanet.Store.IStore.html#Libplanet_Store_IStore_PruneOutdatedChains_System_Boolean_), [code](https://github.com/planetarium/libplanet/blob/739f5f36f2ba9f4fa47424809d4c26ecb06104f8/Libplanet/Store/IStore.cs#L336-L351))