diff --git a/CHANGES.md b/CHANGES.md index 16c55c6a10..a07e9b5924 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,11 @@ To be released. ### Backward-incompatible API changes + - (Libplanet.Crypto) Removed `ToAddress()` extension method for + `PrivateKey` and `PublicKey`. [[#3486]] + - (Libplanet.Crypto) Added `Address` property to `PrivateKey` and `PublicKey`. + [[#3486]] + ### Backward-incompatible network protocol changes ### Backward-incompatible storage format changes @@ -24,6 +29,8 @@ To be released. ### CLI tools +[[#3486]]: https://github.com/planetarium/libplanet/pull/3486 + Version 3.7.0 ------------- diff --git a/Libplanet.Action.Tests/ActionEvaluationTest.cs b/Libplanet.Action.Tests/ActionEvaluationTest.cs index e71f5af145..3bd1223930 100644 --- a/Libplanet.Action.Tests/ActionEvaluationTest.cs +++ b/Libplanet.Action.Tests/ActionEvaluationTest.cs @@ -28,7 +28,7 @@ public ActionEvaluationTest(ITestOutputHelper output) public void Constructor() { var txid = new System.Random().NextTxId(); - Address address = new PrivateKey().ToAddress(); + Address address = new PrivateKey().Address; var evaluation = new ActionEvaluation( new DumbAction(address, "item"), new ActionContext( diff --git a/Libplanet.Action.Tests/Loader/IndexedActionLoaderTest.cs b/Libplanet.Action.Tests/Loader/IndexedActionLoaderTest.cs index 211d0e1383..01f9263ae5 100644 --- a/Libplanet.Action.Tests/Loader/IndexedActionLoaderTest.cs +++ b/Libplanet.Action.Tests/Loader/IndexedActionLoaderTest.cs @@ -39,15 +39,15 @@ public void LoadAction() var loader1 = new SingleActionLoader(typeof(DumbAction)); var loader2 = new SingleActionLoader(typeof(Attack)); var loader3 = new SingleActionLoader(typeof(RandomAction)); - var action1 = new DumbAction(new PrivateKey().PublicKey.ToAddress(), "foo"); + var action1 = new DumbAction(new PrivateKey().Address, "foo"); var action2 = new Attack(); action2.LoadPlainValue(Dictionary.Empty .Add("type_id", "attack") .Add("values", Dictionary.Empty .Add("weapon", "sword") .Add("target", "dummy") - .Add("target_address", new PrivateKey().PublicKey.ToAddress().Bencoded))); - var action3 = new RandomAction(new PrivateKey().PublicKey.ToAddress()); + .Add("target_address", new PrivateKey().Address.Bencoded))); + var action3 = new RandomAction(new PrivateKey().Address); var loader = new IndexedActionLoader( new List<(long, IActionLoader)> diff --git a/Libplanet.Action.Tests/State/KeyConvertersTest.cs b/Libplanet.Action.Tests/State/KeyConvertersTest.cs index 1c973c8a21..8e41273ba0 100644 --- a/Libplanet.Action.Tests/State/KeyConvertersTest.cs +++ b/Libplanet.Action.Tests/State/KeyConvertersTest.cs @@ -15,8 +15,8 @@ public KeyConvertersTest() [Fact] public void ToKeysSpec() { - var address = new PrivateKey().ToAddress(); - var currency = Currency.Uncapped("Foo", 2, new PrivateKey().ToAddress()); + var address = new PrivateKey().Address; + var currency = Currency.Uncapped("Foo", 2, new PrivateKey().Address); Assert.Equal( new KeyBytes(ByteUtil.Hex(address.ByteArray)), diff --git a/Libplanet.Benchmarks/AppendBlock.cs b/Libplanet.Benchmarks/AppendBlock.cs index d028c3f67f..19c5b107ef 100644 --- a/Libplanet.Benchmarks/AppendBlock.cs +++ b/Libplanet.Benchmarks/AppendBlock.cs @@ -56,7 +56,7 @@ public void PrepareAppendMakeTenTransactionsNoAction() public void PrepareAppendMakeOneTransactionWithActions() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo"), @@ -74,7 +74,7 @@ public void PrepareAppendMakeTenTransactionsWithActions() for (var i = 0; i < 10; i++) { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo"), diff --git a/Libplanet.Benchmarks/DataModel/DataModelBenchmark.LeafModel.cs b/Libplanet.Benchmarks/DataModel/DataModelBenchmark.LeafModel.cs index de861663ac..1da903dd64 100644 --- a/Libplanet.Benchmarks/DataModel/DataModelBenchmark.LeafModel.cs +++ b/Libplanet.Benchmarks/DataModel/DataModelBenchmark.LeafModel.cs @@ -22,8 +22,8 @@ public LeafModel() BigDict = Enumerable .Range(0, 1000) .Select(_ => new KeyValuePair( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress().ToString())) + new PrivateKey().Address, + new PrivateKey().Address.ToString())) .ToImmutableDictionary(); } diff --git a/Libplanet.Benchmarks/DataModel/DataModelBenchmark.MidModel.cs b/Libplanet.Benchmarks/DataModel/DataModelBenchmark.MidModel.cs index dfd4194c01..a18fd4c688 100644 --- a/Libplanet.Benchmarks/DataModel/DataModelBenchmark.MidModel.cs +++ b/Libplanet.Benchmarks/DataModel/DataModelBenchmark.MidModel.cs @@ -22,8 +22,8 @@ public MidModel() BigDict = Enumerable .Range(0, 1000) .Select(_ => new KeyValuePair( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress().ToString())) + new PrivateKey().Address, + new PrivateKey().Address.ToString())) .ToImmutableDictionary(); } diff --git a/Libplanet.Benchmarks/DataModel/DataModelBenchmark.RootModel.cs b/Libplanet.Benchmarks/DataModel/DataModelBenchmark.RootModel.cs index 0cdc264632..b54cc13502 100644 --- a/Libplanet.Benchmarks/DataModel/DataModelBenchmark.RootModel.cs +++ b/Libplanet.Benchmarks/DataModel/DataModelBenchmark.RootModel.cs @@ -22,8 +22,8 @@ public RootModel() BigDict = Enumerable .Range(0, 1000) .Select(_ => new KeyValuePair( - new PrivateKey().ToAddress(), - new PrivateKey().ToAddress().ToString())) + new PrivateKey().Address, + new PrivateKey().Address.ToString())) .ToImmutableDictionary(); } diff --git a/Libplanet.Benchmarks/ProposeBlock.cs b/Libplanet.Benchmarks/ProposeBlock.cs index ab29b8214c..ce411c0770 100644 --- a/Libplanet.Benchmarks/ProposeBlock.cs +++ b/Libplanet.Benchmarks/ProposeBlock.cs @@ -77,7 +77,7 @@ public void MakeTenTransactionsNoAction() public void MakeOneTransactionWithActions() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo"), @@ -95,7 +95,7 @@ public void MakeTenTransactionsWithActions() for (var i = 0; i < 10; i++) { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo"), diff --git a/Libplanet.Crypto/Address.cs b/Libplanet.Crypto/Address.cs index b3b9211490..aef9310239 100644 --- a/Libplanet.Crypto/Address.cs +++ b/Libplanet.Crypto/Address.cs @@ -106,7 +106,7 @@ public Address(byte[] address) /// cref="PublicKey"/>. /// Note that there is an equivalent extension method /// , which enables - /// a code like publicKey.ToAddress() instead of + /// a code like publicKey.Address instead of /// new Address(publicKey), for convenience. /// /// A to derive diff --git a/Libplanet.Crypto/AddressExtensions.cs b/Libplanet.Crypto/AddressExtensions.cs deleted file mode 100644 index 4e78123e9d..0000000000 --- a/Libplanet.Crypto/AddressExtensions.cs +++ /dev/null @@ -1,41 +0,0 @@ -namespace Libplanet.Crypto -{ - /// - /// This extension class enables some convenient methods (sugar for - /// the most part) to deal with . - /// - /// - public static class AddressExtensions - { - /// - /// Derives the corresponding from a . - /// This enables a code like publicKey.ToAddress() instead - /// of new Address(publicKey). - /// - /// A to derive - /// the corresponding from. - /// The corresponding derived from - /// . - /// - public static Address ToAddress(this PublicKey publicKey) - { - return new Address(publicKey); - } - - /// - /// Derives the corresponding from a . - /// This enables a code like privateKey.ToAddress() instead - /// of new Address(privateKey.PublicKey). - /// - /// A to derive - /// the corresponding from. - /// The corresponding derived from - /// . - public static Address ToAddress(this PrivateKey privateKey) - { - return new Address(privateKey.PublicKey); - } - } -} diff --git a/Libplanet.Crypto/PrivateKey.cs b/Libplanet.Crypto/PrivateKey.cs index e038bdcccc..94644818f4 100644 --- a/Libplanet.Crypto/PrivateKey.cs +++ b/Libplanet.Crypto/PrivateKey.cs @@ -134,6 +134,12 @@ public PublicKey PublicKey } } + /// + /// The corresponding derived from a . + /// This is the same as the one derived from . + /// + public Address Address => new Address(PublicKey); + /// /// An encoded array representation. /// diff --git a/Libplanet.Crypto/PublicKey.cs b/Libplanet.Crypto/PublicKey.cs index 9869ec3292..c63a976d27 100644 --- a/Libplanet.Crypto/PublicKey.cs +++ b/Libplanet.Crypto/PublicKey.cs @@ -60,6 +60,11 @@ internal PublicKey(ECPublicKeyParameters keyParam) KeyParam = keyParam; } + /// + /// The corresponding derived from a . + /// + public Address Address => new Address(this); + internal ECPublicKeyParameters KeyParam { get; } public static bool operator ==(PublicKey left, PublicKey right) => left.Equals(right); diff --git a/Libplanet.Explorer.Tests/GeneratedBlockChainFixture.cs b/Libplanet.Explorer.Tests/GeneratedBlockChainFixture.cs index 8f35c9797c..16855ebf00 100644 --- a/Libplanet.Explorer.Tests/GeneratedBlockChainFixture.cs +++ b/Libplanet.Explorer.Tests/GeneratedBlockChainFixture.cs @@ -58,7 +58,7 @@ public GeneratedBlockChainFixture( .Empty, (dict, pk) => dict.SetItem( - pk.ToAddress(), + pk.Address, ImmutableArray.Empty)); SignedTxs = PrivateKeys.Aggregate( ImmutableDictionary< @@ -66,7 +66,7 @@ public GeneratedBlockChainFixture( ImmutableArray>.Empty, (dict, pk) => dict.SetItem( - pk.ToAddress(), + pk.Address, ImmutableArray.Empty)); InvolvedTxs = PrivateKeys.Aggregate( ImmutableDictionary< @@ -74,7 +74,7 @@ public GeneratedBlockChainFixture( ImmutableArray>.Empty, (dict, pk) => dict.SetItem( - pk.ToAddress(), + pk.Address, ImmutableArray.Empty)); var privateKey = new PrivateKey(); @@ -90,7 +90,7 @@ public GeneratedBlockChainFixture( Block genesisBlock = BlockChain.ProposeGenesisBlock( actionEvaluator, transactions: PrivateKeys - .OrderBy(pk => pk.ToAddress().ToHex()) + .OrderBy(pk => pk.Address.ToHex()) .Select( (pk, i) => Transaction.Create( nonce: i, @@ -126,7 +126,7 @@ public GeneratedBlockChainFixture( random.Next(), actionsForTransactions.Select(actions => Transaction.Create( - Chain.GetNextTxNonce(pk.ToAddress()), + Chain.GetNextTxNonce(pk.Address), pk, Chain.Genesis.Hash, actions.ToPlainValues())) @@ -150,7 +150,7 @@ public GeneratedBlockChainFixture( random.Next(), actionsForTransactions.Select(actions => Transaction.Create( - Chain.GetNextTxNonce(pk.ToAddress()), + Chain.GetNextTxNonce(pk.Address), pk, Chain.Genesis.Hash, actions.ToPlainValues())) @@ -172,7 +172,7 @@ private ImmutableArray GetRandomTransactions( var pk = PrivateKeys[random.Next(PrivateKeys.Length)]; if (!nonces.TryGetValue(pk, out var nonce)) { - nonce = Chain.GetNextTxNonce(pk.ToAddress()); + nonce = Chain.GetNextTxNonce(pk.Address); } nonces = nonces.SetItem(pk, nonce + 1); @@ -187,7 +187,7 @@ private Transaction GetRandomTransaction(int seed, PrivateKey pk, long nonce) { var random = new System.Random(seed); - var addr = pk.ToAddress(); + var addr = pk.Address; var bal = (int)(Chain.GetBalance(addr, TestCurrency).MajorUnit & int.MaxValue); return Transaction.Create( nonce, @@ -216,7 +216,7 @@ private IImmutableSet
GetRandomAddresses(int seed) return Enumerable.Range(0, random.Next(PrivateKeys.Length - 1) + 1) .Aggregate( ImmutableHashSet
.Empty, - (arr, _) => arr.Add(PrivateKeys[random.Next(PrivateKeys.Length)].ToAddress())); + (arr, _) => arr.Add(PrivateKeys[random.Next(PrivateKeys.Length)].Address)); } private void AddBlock( @@ -243,7 +243,7 @@ private void AddBlock( 0, block.Hash, PrivateKeys - .OrderBy(pk => pk.ToAddress().ToHex()) + .OrderBy(pk => pk.Address.ToHex()) .Select(pk => new VoteMetadata( Chain.Tip.Index + 1, 0, @@ -252,7 +252,7 @@ private void AddBlock( pk.PublicKey, VoteFlag.PreCommit).Sign(pk)).ToImmutableArray())); MinedBlocks = - MinedBlocks.SetItem(pk.ToAddress(), MinedBlocks[pk.ToAddress()].Add(block)); + MinedBlocks.SetItem(pk.Address, MinedBlocks[pk.Address].Add(block)); SignedTxs = transactions.Aggregate( SignedTxs, (dict, tx) => diff --git a/Libplanet.Explorer.Tests/Indexing/BlockChainIndexTest.cs b/Libplanet.Explorer.Tests/Indexing/BlockChainIndexTest.cs index e825dc5993..8a8ae4aaf8 100644 --- a/Libplanet.Explorer.Tests/Indexing/BlockChainIndexTest.cs +++ b/Libplanet.Explorer.Tests/Indexing/BlockChainIndexTest.cs @@ -50,7 +50,7 @@ await index.SynchronizeAsync( 0, divergentBlock.Hash, ChainFx.PrivateKeys - .OrderBy(pk => pk.ToAddress().ToHex()) + .OrderBy(pk => pk.Address.ToHex()) .Select(pk => new VoteMetadata( forkedChain.Tip.Index + 1, 0, @@ -85,7 +85,7 @@ public async Task GetLastNonceByAddress() { foreach (var pk in ChainFx.PrivateKeys) { - var address = pk.ToAddress(); + var address = pk.Address; Assert.Equal( ChainFx.Chain.GetNextTxNonce(address) - 1, // ReSharper disable once MethodHasAsyncOverload @@ -251,7 +251,7 @@ public async Task GetBlockHashesByMiner(bool fromHalfway, bool throughHalfway, b { foreach (var pk in ChainFx.PrivateKeys) { - var address = pk.ToAddress(); + var address = pk.Address; var inChain = ChainFx.MinedBlocks[address].ToArray(); inChain = desc ? inChain.Reverse().ToArray() : inChain; int? fromHeight = fromHalfway ? inChain.Length / 4 : null; @@ -305,7 +305,7 @@ public async Task GetSignedTxIdsByAddress(bool fromHalfway, bool throughHalfway, { foreach (var pk in ChainFx.PrivateKeys) { - var address = pk.ToAddress(); + var address = pk.Address; var inChain = ChainFx.SignedTxs[address].ToArray(); inChain = desc ? inChain.Reverse().ToArray() : inChain; int? fromNonce = fromHalfway ? inChain.Length / 4 : null; diff --git a/Libplanet.Explorer.Tests/Queries/TransactionQueryGeneratedTest.cs b/Libplanet.Explorer.Tests/Queries/TransactionQueryGeneratedTest.cs index fda7e5b6f0..bbb0bb8b68 100644 --- a/Libplanet.Explorer.Tests/Queries/TransactionQueryGeneratedTest.cs +++ b/Libplanet.Explorer.Tests/Queries/TransactionQueryGeneratedTest.cs @@ -54,7 +54,7 @@ public async Task TransactionResult() var successTx = successBlock.Transactions.First(); var pk = Fx.PrivateKeys[0]; var stagingTx = Transaction.Create( - Fx.Chain.GetNextTxNonce(pk.ToAddress()), + Fx.Chain.GetNextTxNonce(pk.Address), pk, Fx.Chain.Genesis.Hash, ImmutableArray.Empty.Add(new SimpleAction1()).ToPlainValues()); @@ -89,11 +89,11 @@ public virtual async Task Transactions() { var allBlocks = Fx.Chain.IterateBlocks().ToImmutableArray(); await AssertTransactionsQueryPermutation(allBlocks, null, null); - foreach (var signer in Fx.PrivateKeys.Select(pk => pk.ToAddress())) + foreach (var signer in Fx.PrivateKeys.Select(pk => pk.Address)) { await AssertTransactionsQueryPermutation(allBlocks, signer, null); await AssertTransactionsQueryPermutation(allBlocks, null, signer); - foreach (var involved in Fx.PrivateKeys.Select(pk => pk.ToAddress())) + foreach (var involved in Fx.PrivateKeys.Select(pk => pk.Address)) { await AssertTransactionsQueryPermutation(allBlocks, signer, involved); } diff --git a/Libplanet.Explorer.Tests/Queries/TransactionQueryTest.cs b/Libplanet.Explorer.Tests/Queries/TransactionQueryTest.cs index 3a0bb11ba1..e98279c2e4 100644 --- a/Libplanet.Explorer.Tests/Queries/TransactionQueryTest.cs +++ b/Libplanet.Explorer.Tests/Queries/TransactionQueryTest.cs @@ -120,19 +120,19 @@ async Task AssertNextNonce(long expected, Address address) { var key1 = new PrivateKey(); // account nonce is 0 in the beginning - await AssertNextNonce(0, key1.ToAddress()); + await AssertNextNonce(0, key1.Address); // staged txs increase next nonce Source.BlockChain.MakeTransaction(key1, ImmutableList.Empty.Add(new NullAction())); - await AssertNextNonce(1, key1.ToAddress()); + await AssertNextNonce(1, key1.Address); Source.BlockChain.MakeTransaction(key1, ImmutableList.Empty.Add(new NullAction())); - await AssertNextNonce(2, key1.ToAddress()); + await AssertNextNonce(2, key1.Address); var block = Source.BlockChain.ProposeBlock(new PrivateKey()); Source.BlockChain.Append(block, Libplanet.Tests.TestUtils.CreateBlockCommit(block)); - await AssertNextNonce(2, key1.ToAddress()); + await AssertNextNonce(2, key1.Address); var key2 = new PrivateKey(); - await AssertNextNonce(0, key2.ToAddress()); + await AssertNextNonce(0, key2.Address); // staging txs of key2 does not increase nonce of key1 Source.BlockChain.MakeTransaction(key2, ImmutableList.Empty.Add(new NullAction())); @@ -140,18 +140,18 @@ async Task AssertNextNonce(long expected, Address address) { new PrivateKey(), Libplanet.Tests.TestUtils.CreateBlockCommit(block)); Source.BlockChain.Append(block, Libplanet.Tests.TestUtils.CreateBlockCommit(block)); - await AssertNextNonce(1, key2.ToAddress()); - await AssertNextNonce(2, key1.ToAddress()); + await AssertNextNonce(1, key2.Address); + await AssertNextNonce(2, key1.Address); // unstaging txs decrease nonce Source.BlockChain.MakeTransaction(key1, ImmutableList.Empty.Add(new NullAction())); - await AssertNextNonce(3, key1.ToAddress()); + await AssertNextNonce(3, key1.Address); Source.BlockChain.MakeTransaction(key1, ImmutableList.Empty.Add(new NullAction())); - await AssertNextNonce(4, key1.ToAddress()); + await AssertNextNonce(4, key1.Address); Source.BlockChain.GetStagedTransactionIds() .Select(Source.BlockChain.GetTransaction) .Select(Source.BlockChain.UnstageTransaction) .ToImmutableList(); - await AssertNextNonce(2, key1.ToAddress()); + await AssertNextNonce(2, key1.Address); } } diff --git a/Libplanet.Explorer/Queries/TransactionQuery.cs b/Libplanet.Explorer/Queries/TransactionQuery.cs index 5b8c5198db..00c0975ed0 100644 --- a/Libplanet.Explorer/Queries/TransactionQuery.cs +++ b/Libplanet.Explorer/Queries/TransactionQuery.cs @@ -147,7 +147,7 @@ public TransactionQuery(IBlockChainContext context) var publicKey = new PublicKey( ByteUtil.ParseHex(context.GetArgument("publicKey")) ); - Address signer = publicKey.ToAddress(); + Address signer = publicKey.Address; long nonce = context.GetArgument("nonce") ?? chain.GetNextTxNonce(signer); var sigMeta = new TxSigningMetadata(publicKey, nonce); diff --git a/Libplanet.Extensions.Cocona/Commands/KeyCommand.cs b/Libplanet.Extensions.Cocona/Commands/KeyCommand.cs index d7ba336ba1..fcbac521f5 100644 --- a/Libplanet.Extensions.Cocona/Commands/KeyCommand.cs +++ b/Libplanet.Extensions.Cocona/Commands/KeyCommand.cs @@ -185,7 +185,7 @@ public void Generate( { var key = new PrivateKey(); string priv = ByteUtil.Hex(key.ByteArray); - string addr = key.ToAddress().ToString(); + string addr = key.Address.ToString(); string pub = ByteUtil.Hex(key.PublicKey.Format(compress: true)); if (!noAddress && publicKey) @@ -281,7 +281,7 @@ public void Derive( PublicKey pubKey = publicKey ? PublicKey.FromHex(key) : ValidateRawHex(key).PublicKey; - string addr = pubKey.ToAddress().ToString(); + string addr = pubKey.Address.ToString(); string pub = ByteUtil.Hex(pubKey.Format(compress: true)); Utils.PrintTable(("Public Key", "Address"), new[] { (pub, addr) }); } diff --git a/Libplanet.Net.Tests/AppProtocolVersionTest.cs b/Libplanet.Net.Tests/AppProtocolVersionTest.cs index fc243c50c4..8897a4a678 100644 --- a/Libplanet.Net.Tests/AppProtocolVersionTest.cs +++ b/Libplanet.Net.Tests/AppProtocolVersionTest.cs @@ -20,7 +20,7 @@ public class AppProtocolVersionTest private static readonly AppProtocolVersion ValidClaimFixture = new AppProtocolVersion( version: 1, extra: null, - signer: SignerFixture.ToAddress(), + signer: SignerFixture.Address, signature: new byte[] { 0x30, 0x45, 0x02, 0x21, 0x00, 0x89, 0x95, 0x9c, 0x59, 0x25, 0x83, 0x4e, @@ -35,7 +35,7 @@ public class AppProtocolVersionTest private static readonly AppProtocolVersion ValidClaimWExtraFixture = new AppProtocolVersion( version: 123, extra: (Bencodex.Types.Text)"foo", - signer: SignerFixture.ToAddress(), + signer: SignerFixture.Address, signature: new byte[] { 0x30, 0x44, 0x02, 0x20, 0x08, 0x5d, 0xd4, 0x4d, 0x2f, 0xa1, 0x57, 0xe0, @@ -105,7 +105,7 @@ public void Verify() var invalidSigner = new AppProtocolVersion( version: ValidClaimFixture.Version, extra: ValidClaimFixture.Extra, - signer: otherPartyPublicKey.ToAddress(), + signer: otherPartyPublicKey.Address, signature: ValidClaimFixture.Signature ); Assert.False(invalidSigner.Verify(signerPublicKey)); @@ -163,7 +163,7 @@ public void Equality() version, extra, signature, - new PrivateKey().ToAddress()); + new PrivateKey().Address); Assert.False(((IEquatable)claim).Equals(claim5)); Assert.False(((object)claim).Equals(claim5)); Assert.NotEqual(claim.GetHashCode(), claim5.GetHashCode()); diff --git a/Libplanet.Net.Tests/Consensus/ContextNonProposerTest.cs b/Libplanet.Net.Tests/Consensus/ContextNonProposerTest.cs index 287284d5da..2f88c593df 100644 --- a/Libplanet.Net.Tests/Consensus/ContextNonProposerTest.cs +++ b/Libplanet.Net.Tests/Consensus/ContextNonProposerTest.cs @@ -231,7 +231,7 @@ public async Task EnterPreVoteNilOnInvalidBlockHeader() protocolVersion: BlockMetadata.CurrentProtocolVersion - 1, index: blockChain.Tip.Index + 2, timestamp: blockChain.Tip.Timestamp.Subtract(TimeSpan.FromSeconds(1)), - miner: TestUtils.PrivateKeys[1].PublicKey.ToAddress(), + miner: TestUtils.PrivateKeys[1].Address, publicKey: TestUtils.PrivateKeys[1].PublicKey, previousHash: blockChain.Tip.Hash, txHash: null, @@ -266,7 +266,7 @@ public async Task EnterPreVoteNilOnInvalidBlockContent() TxPolicyViolationException? IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = TestUtils.PrivateKeys[1].PublicKey.ToAddress(); + var validAddress = TestUtils.PrivateKeys[1].Address; return tx.Signer.Equals(validAddress) ? null : new TxPolicyViolationException("invalid signer", tx.Id); diff --git a/Libplanet.Net.Tests/Consensus/ContextProposerValidRoundTest.cs b/Libplanet.Net.Tests/Consensus/ContextProposerValidRoundTest.cs index 0720804c43..5ff5a10143 100644 --- a/Libplanet.Net.Tests/Consensus/ContextProposerValidRoundTest.cs +++ b/Libplanet.Net.Tests/Consensus/ContextProposerValidRoundTest.cs @@ -172,7 +172,7 @@ public async void EnterValidRoundPreVoteNil() protocolVersion: BlockMetadata.CurrentProtocolVersion, index: blockChain.Tip.Index + 1, timestamp: blockChain.Tip.Timestamp.Add(TimeSpan.FromSeconds(1)), - miner: key.PublicKey.ToAddress(), + miner: key.Address, publicKey: key.PublicKey, previousHash: blockChain.Tip.Hash, txHash: null, diff --git a/Libplanet.Net.Tests/Consensus/ContextTest.cs b/Libplanet.Net.Tests/Consensus/ContextTest.cs index 6f138e00dc..b54ee154d7 100644 --- a/Libplanet.Net.Tests/Consensus/ContextTest.cs +++ b/Libplanet.Net.Tests/Consensus/ContextTest.cs @@ -454,7 +454,7 @@ public async void CanReplaceProposal() var codec = new Codec(); var privateKeys = Enumerable.Range(0, 4).Select(_ => new PrivateKey()).ToArray(); // Order keys as validator set's order to run test as intended. - privateKeys = privateKeys.OrderBy(key => key.ToAddress()).ToArray(); + privateKeys = privateKeys.OrderBy(key => key.Address).ToArray(); var proposer = privateKeys[1]; var key1 = privateKeys[2]; var key2 = privateKeys[3]; diff --git a/Libplanet.Net.Tests/Messages/NetMQMessageCodecTest.cs b/Libplanet.Net.Tests/Messages/NetMQMessageCodecTest.cs index 12ac58e29d..eb452a3bb3 100644 --- a/Libplanet.Net.Tests/Messages/NetMQMessageCodecTest.cs +++ b/Libplanet.Net.Tests/Messages/NetMQMessageCodecTest.cs @@ -110,7 +110,7 @@ private MessageContent CreateMessage(MessageContent.MessageType type) case MessageContent.MessageType.Tx: return new Libplanet.Net.Messages.TxMsg(transaction.Serialize()); case MessageContent.MessageType.FindNeighbors: - return new FindNeighborsMsg(privateKey.ToAddress()); + return new FindNeighborsMsg(privateKey.Address); case MessageContent.MessageType.Neighbors: return new NeighborsMsg(new[] { boundPeer }); case MessageContent.MessageType.BlockHeaderMessage: diff --git a/Libplanet.Net.Tests/Protocols/ProtocolTest.cs b/Libplanet.Net.Tests/Protocols/ProtocolTest.cs index 45adda6359..1c267cf571 100644 --- a/Libplanet.Net.Tests/Protocols/ProtocolTest.cs +++ b/Libplanet.Net.Tests/Protocols/ProtocolTest.cs @@ -514,7 +514,7 @@ public async Task RefreshTable() const int peersCount = 10; var privateKey = new PrivateKey(); var privateKeys = Enumerable.Range(0, peersCount).Select( - i => GeneratePrivateKeyOfBucketIndex(privateKey.ToAddress(), i / 2)); + i => GeneratePrivateKeyOfBucketIndex(privateKey.Address, i / 2)); TestTransport transport = CreateTestTransport(privateKey); TestTransport[] transports = privateKeys.Select(key => CreateTestTransport(key)).ToArray(); diff --git a/Libplanet.Net.Tests/Protocols/RoutingTableTest.cs b/Libplanet.Net.Tests/Protocols/RoutingTableTest.cs index e8fc87fab8..d1ef12b9c7 100644 --- a/Libplanet.Net.Tests/Protocols/RoutingTableTest.cs +++ b/Libplanet.Net.Tests/Protocols/RoutingTableTest.cs @@ -38,7 +38,7 @@ public RoutingTableTest(ITestOutputHelper output) public void AddSelf() { var pubKey = new PrivateKey().PublicKey; - var table = new RoutingTable(pubKey.ToAddress()); + var table = new RoutingTable(pubKey.Address); var peer = new BoundPeer(pubKey, new DnsEndPoint("0.0.0.0", 1234)); Assert.Throws(() => table.AddPeer(peer)); } @@ -50,7 +50,7 @@ public void AddPeer() var pubKey1 = new PrivateKey().PublicKey; var pubKey2 = new PrivateKey().PublicKey; var pubKey3 = new PrivateKey().PublicKey; - var table = new RoutingTable(pubKey0.ToAddress(), 1, 2); + var table = new RoutingTable(pubKey0.Address, 1, 2); var peer1 = new BoundPeer(pubKey1, new DnsEndPoint("0.0.0.0", 1234)); var peer2 = new BoundPeer(pubKey2, new DnsEndPoint("0.0.0.0", 1234)); var peer3 = new BoundPeer(pubKey3, new DnsEndPoint("0.0.0.0", 1234)); @@ -70,7 +70,7 @@ public void RemovePeer() { var pubKey1 = new PrivateKey().PublicKey; var pubKey2 = new PrivateKey().PublicKey; - var table = new RoutingTable(pubKey1.ToAddress(), 1, 2); + var table = new RoutingTable(pubKey1.Address, 1, 2); var peer1 = new BoundPeer(pubKey1, new DnsEndPoint("0.0.0.0", 1234)); var peer2 = new BoundPeer(pubKey2, new DnsEndPoint("0.0.0.0", 1234)); @@ -101,14 +101,14 @@ public void Generate() count++; publicKey = new PrivateKey().PublicKey; } - while (table.GetBucketIndexOf(publicKey.ToAddress()) != targetBucket); + while (table.GetBucketIndexOf(publicKey.Address) != targetBucket); Log.Debug( "Found public key of bucket index {Index} in {Count} tries: {Key}", - table.GetBucketIndexOf(publicKey.ToAddress()), + table.GetBucketIndexOf(publicKey.Address), count, ByteArrayToString(publicKey.Format(true))); - Assert.Equal(targetBucket, table.GetBucketIndexOf(publicKey.ToAddress())); + Assert.Equal(targetBucket, table.GetBucketIndexOf(publicKey.Address)); } [Fact] @@ -116,7 +116,7 @@ public void PeersToBroadcast() { var (publicKey, publicKeys) = GeneratePeersDifferentBuckets(); - var table = new RoutingTable(publicKey.ToAddress()); + var table = new RoutingTable(publicKey.Address); var peers = publicKeys .Select(pk => new BoundPeer(pk, new DnsEndPoint("0.0.0.0", 1234))) .ToArray(); @@ -144,7 +144,7 @@ public void PeersToBroadcast() public void PeersToRefresh() { var (publicKey, publicKeys) = GeneratePeersDifferentBuckets(); - var table = new RoutingTable(publicKey.ToAddress()); + var table = new RoutingTable(publicKey.Address); int peerCount = publicKeys.Length; BoundPeer[] peers = publicKeys .Select( @@ -171,7 +171,7 @@ public void PeersToRefresh() public void PeersToRefreshInSingleBucket() { var publicKey = new PrivateKey().PublicKey; - var table = new RoutingTable(publicKey.ToAddress(), 1); + var table = new RoutingTable(publicKey.Address, 1); const int peerCount = 10; BoundPeer[] peers = Enumerable.Range(0, peerCount) .Select( diff --git a/Libplanet.Net.Tests/Protocols/TestTransport.cs b/Libplanet.Net.Tests/Protocols/TestTransport.cs index e362f89d2d..730e94d32f 100644 --- a/Libplanet.Net.Tests/Protocols/TestTransport.cs +++ b/Libplanet.Net.Tests/Protocols/TestTransport.cs @@ -48,7 +48,7 @@ public TestTransport( _runningEvent = new TaskCompletionSource(); _privateKey = privateKey; _blockBroadcast = blockBroadcast; - var loggerId = _privateKey.ToAddress().ToHex(); + var loggerId = _privateKey.Address.ToHex(); _logger = Log.ForContext() .ForContext("Address", loggerId); @@ -57,7 +57,7 @@ public TestTransport( ReceivedMessages = new ConcurrentBag(); MessageReceived = new AsyncAutoResetEvent(); _transports = transports; - _transports[privateKey.ToAddress()] = this; + _transports[privateKey.Address] = this; _networkDelay = networkDelay ?? TimeSpan.Zero; _requests = new AsyncCollection(); _ignoreTestMessageWithData = new List(); @@ -72,7 +72,7 @@ public TestTransport( public AsyncAutoResetEvent MessageReceived { get; } - public Address Address => _privateKey.ToAddress(); + public Address Address => _privateKey.Address; public BoundPeer AsPeer => new BoundPeer( _privateKey.PublicKey, @@ -359,7 +359,7 @@ public async Task SendMessageAsync( var bytes = new byte[10]; _random.NextBytes(bytes); var sendTime = DateTimeOffset.UtcNow; - var identity = _privateKey.ToAddress().ByteArray.Concat(bytes).ToArray(); + var identity = _privateKey.Address.ByteArray.Concat(bytes).ToArray(); _logger.Debug("Adding request of {Content} of {Identity}", content, identity); await _requests.AddAsync( new Request diff --git a/Libplanet.Net.Tests/SwarmTest.AppProtocolVersion.cs b/Libplanet.Net.Tests/SwarmTest.AppProtocolVersion.cs index d8f13efdca..8e39c2f777 100644 --- a/Libplanet.Net.Tests/SwarmTest.AppProtocolVersion.cs +++ b/Libplanet.Net.Tests/SwarmTest.AppProtocolVersion.cs @@ -101,8 +101,8 @@ public async Task IgnoreUntrustedAppProtocolVersion() AppProtocolVersion untrustedOlder = AppProtocolVersion.Sign(untrustedSigner, 2); AppProtocolVersion untrustedNewer = AppProtocolVersion.Sign(untrustedSigner, 3); - _output.WriteLine("Trusted version signer: {0}", signer.ToAddress()); - _output.WriteLine("Untrusted version signer: {0}", untrustedSigner.ToAddress()); + _output.WriteLine("Trusted version signer: {0}", signer.Address); + _output.WriteLine("Untrusted version signer: {0}", untrustedSigner.Address); var logs = new ConcurrentDictionary(); diff --git a/Libplanet.Net.Tests/SwarmTest.Broadcast.cs b/Libplanet.Net.Tests/SwarmTest.Broadcast.cs index e866975e12..d6b496bfbe 100644 --- a/Libplanet.Net.Tests/SwarmTest.Broadcast.cs +++ b/Libplanet.Net.Tests/SwarmTest.Broadcast.cs @@ -347,7 +347,7 @@ public async Task BroadcastTxWhileMining() BlockChain chainC = swarmC.BlockChain; var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var txCount = 10; var txs = Enumerable.Range(0, txCount).Select(_ => @@ -568,7 +568,7 @@ public async Task DoNotRebroadcastTxsWithLowerNonce() swarmB.RoutingTable.RemovePeer(swarmA.AsPeer); chainA.UnstageTransaction(tx2); - Assert.Equal(1, chainA.GetNextTxNonce(privateKey.ToAddress())); + Assert.Equal(1, chainA.GetNextTxNonce(privateKey.Address)); await StopAsync(swarmA); await StopAsync(swarmB); @@ -941,7 +941,7 @@ await swarmC.PullBlocksAsync( public async Task CanFillWithInvalidTransaction() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var swarm1 = await CreateSwarm().ConfigureAwait(false); var swarm2 = await CreateSwarm().ConfigureAwait(false); diff --git a/Libplanet.Net.Tests/SwarmTest.Fixtures.cs b/Libplanet.Net.Tests/SwarmTest.Fixtures.cs index 5b0036abe0..1bd32a0bb4 100644 --- a/Libplanet.Net.Tests/SwarmTest.Fixtures.cs +++ b/Libplanet.Net.Tests/SwarmTest.Fixtures.cs @@ -39,7 +39,7 @@ private static (Address, Block[]) MakeBlockChain(policy, storeFx.Store, storeFx.StateStore); var miner = new PrivateKey(); var signer = new PrivateKey(); - Address address = signer.ToAddress(); + Address address = signer.Address; Log.Logger.Information("Fixture blocks:"); for (int i = 0; i < 20; i++) { diff --git a/Libplanet.Net.Tests/SwarmTest.Preload.cs b/Libplanet.Net.Tests/SwarmTest.Preload.cs index bc9db0d1c1..f82c69d8ab 100644 --- a/Libplanet.Net.Tests/SwarmTest.Preload.cs +++ b/Libplanet.Net.Tests/SwarmTest.Preload.cs @@ -76,8 +76,8 @@ public async Task InitialBlockDownloadStates() BlockChain receiverChain = receiverSwarm.BlockChain; var key = new PrivateKey(); - var address1 = key.ToAddress(); - var address2 = new PrivateKey().ToAddress(); + var address1 = key.Address; + var address2 = new PrivateKey().Address; var action = new DumbAction( address1, diff --git a/Libplanet.Net.Tests/SwarmTest.cs b/Libplanet.Net.Tests/SwarmTest.cs index 419f35f00b..b263194dca 100644 --- a/Libplanet.Net.Tests/SwarmTest.cs +++ b/Libplanet.Net.Tests/SwarmTest.cs @@ -1026,8 +1026,8 @@ public async void RestageTransactionsOnceLocallyMinedAfterReorg(bool restage) var privateKeyA = new PrivateKey(); var privateKeyB = new PrivateKey(); - var targetAddress1 = new PrivateKey().ToAddress(); - var targetAddress2 = new PrivateKey().ToAddress(); + var targetAddress1 = new PrivateKey().Address; + var targetAddress2 = new PrivateKey().Address; try { @@ -1104,9 +1104,9 @@ public async Task UnstageInvalidTransaction() TxPolicyViolationException IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); + var validAddress = validKey.Address; return tx.Signer.Equals(validAddress) || - tx.Signer.Equals(GenesisProposer.ToAddress()) + tx.Signer.Equals(GenesisProposer.Address) ? null : new TxPolicyViolationException("invalid signer", tx.Id); } @@ -1163,9 +1163,9 @@ public async Task IgnoreTransactionFromDifferentGenesis() TxPolicyViolationException IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); + var validAddress = validKey.Address; return tx.Signer.Equals(validAddress) || - tx.Signer.Equals(GenesisProposer.ToAddress()) + tx.Signer.Equals(GenesisProposer.Address) ? null : new TxPolicyViolationException("invalid signer", tx.Id); } @@ -1256,8 +1256,8 @@ public async Task CreateNewChainWhenBranchPointNotExist() stateRootHash: genesis.StateRootHash, lastCommit: CreateBlockCommit(bBlock1)); - policyA.BlockedMiners.Add(keyB.ToAddress()); - policyB.BlockedMiners.Add(keyA.ToAddress()); + policyA.BlockedMiners.Add(keyB.Address); + policyB.BlockedMiners.Add(keyA.Address); var minerSwarmA = await CreateSwarm(keyA, policy: policyA, genesis: genesis).ConfigureAwait(false); @@ -1339,7 +1339,7 @@ public async Task DoNotReceiveBlockFromNodeHavingDifferenceGenesisBlock() var privateKeyB = new PrivateKey(keyB); var privateKeyC = new PrivateKey(keyC); - var signerAddress = new PrivateKey().ToAddress(); + var signerAddress = new PrivateKey().Address; var actionsA = new[] { new DumbAction(signerAddress, "1") }; var actionsB = new[] { new DumbAction(signerAddress, "2") }; diff --git a/Libplanet.Net.Tests/TestUtils.cs b/Libplanet.Net.Tests/TestUtils.cs index 8f55848a9d..a9013fa779 100644 --- a/Libplanet.Net.Tests/TestUtils.cs +++ b/Libplanet.Net.Tests/TestUtils.cs @@ -76,7 +76,7 @@ public static PrivateKey GeneratePrivateKeyOfBucketIndex(Address tableAddress, i { privateKey = new PrivateKey(); } - while (table.GetBucketIndexOf(privateKey.ToAddress()) != target); + while (table.GetBucketIndexOf(privateKey.Address) != target); return privateKey; } diff --git a/Libplanet.Net.Tests/Transports/TransportTest.cs b/Libplanet.Net.Tests/Transports/TransportTest.cs index 1c5a434fb4..9b8a3b2a24 100644 --- a/Libplanet.Net.Tests/Transports/TransportTest.cs +++ b/Libplanet.Net.Tests/Transports/TransportTest.cs @@ -135,7 +135,7 @@ public async Task AsPeer() try { var peer = transport.AsPeer; - Assert.Equal(privateKey.ToAddress(), peer.Address); + Assert.Equal(privateKey.Address, peer.Address); Assert.Equal(host, peer.EndPoint.Host); } finally @@ -353,7 +353,7 @@ public async Task SendMessageAsyncCancelWhenTransportStop() [SkippableFact(Timeout = Timeout)] public async Task BroadcastMessage() { - var address = new PrivateKey().ToAddress(); + var address = new PrivateKey().Address; ITransport transportA = null; ITransport transportB = await CreateTransportAsync( privateKey: GeneratePrivateKeyOfBucketIndex(address, 0)); diff --git a/Libplanet.Net/Consensus/Context.Mutate.cs b/Libplanet.Net/Consensus/Context.Mutate.cs index 7776e2659d..e6f2c9e193 100644 --- a/Libplanet.Net/Consensus/Context.Mutate.cs +++ b/Libplanet.Net/Consensus/Context.Mutate.cs @@ -135,7 +135,7 @@ private bool AddMessage(ConsensusMsg message) voteMsg, voteMsg.Height, voteMsg.Round, - voteMsg.ValidatorPublicKey.ToAddress(), + voteMsg.ValidatorPublicKey.Address, voteMsg.BlockHash, ToString()); return true; diff --git a/Libplanet.Net/Consensus/Context.cs b/Libplanet.Net/Consensus/Context.cs index e9177de1ca..008ad29428 100644 --- a/Libplanet.Net/Consensus/Context.cs +++ b/Libplanet.Net/Consensus/Context.cs @@ -356,7 +356,7 @@ public override string ToString() { var dict = new Dictionary { - { "node_id", _privateKey.ToAddress().ToString() }, + { "node_id", _privateKey.Address.ToString() }, { "number_of_validators", _validatorSet.TotalCount }, { "height", Height }, { "round", Round }, diff --git a/Libplanet.Net/Consensus/VoteSet.cs b/Libplanet.Net/Consensus/VoteSet.cs index 22138c3a8d..23531b03aa 100644 --- a/Libplanet.Net/Consensus/VoteSet.cs +++ b/Libplanet.Net/Consensus/VoteSet.cs @@ -220,7 +220,7 @@ public bool[] BitArrayByBlockHash(BlockHash blockHash) /// A copy of the list of s stored by the . /// public List List() - => _votes.Values.OrderBy(vote => vote.ValidatorPublicKey.ToAddress()).ToList(); + => _votes.Values.OrderBy(vote => vote.ValidatorPublicKey.Address).ToList(); /// /// Returns a copy of the list of s stored by the . diff --git a/Libplanet.Net/Swarm.cs b/Libplanet.Net/Swarm.cs index eafabd2437..9d4d8317cf 100644 --- a/Libplanet.Net/Swarm.cs +++ b/Libplanet.Net/Swarm.cs @@ -79,7 +79,7 @@ public Swarm( _runningMutex = new AsyncLock(); - string loggerId = _privateKey.ToAddress().ToHex(); + string loggerId = _privateKey.Address.ToHex(); _logger = Log .ForContext() .ForContext("Source", nameof(Swarm)) @@ -138,7 +138,7 @@ public Swarm( public DnsEndPoint EndPoint => AsPeer is BoundPeer boundPeer ? boundPeer.EndPoint : null; - public Address Address => _privateKey.ToAddress(); + public Address Address => _privateKey.Address; public BoundPeer AsPeer => Transport?.AsPeer; diff --git a/Libplanet.Tests/Action/AccountDiffTest.cs b/Libplanet.Tests/Action/AccountDiffTest.cs index 16c902ad21..b1d2da6c0c 100644 --- a/Libplanet.Tests/Action/AccountDiffTest.cs +++ b/Libplanet.Tests/Action/AccountDiffTest.cs @@ -42,10 +42,10 @@ public void EmptyAccountStateSource() IAccount targetAccount = new Account(new AccountState(targetTrie)); PrivateKey signer = new PrivateKey(); - IActionContext context = CreateActionContext(signer.ToAddress(), targetTrie); + IActionContext context = CreateActionContext(signer.Address, targetTrie); targetAccount = targetAccount.MintAsset( - context, signer.ToAddress(), new FungibleAssetValue(USD, 123, 45)); - targetAccount = targetAccount.SetState(signer.ToAddress(), new Text("Foo")); + context, signer.Address, new FungibleAssetValue(USD, 123, 45)); + targetAccount = targetAccount.SetState(signer.Address, new Text("Foo")); targetTrie = Commit(stateStore, targetTrie, targetAccount.Delta); @@ -75,11 +75,11 @@ public void Diff() IAccount targetAccount = new Account(new AccountState(targetTrie)); PrivateKey signer = new PrivateKey(); - IActionContext context = CreateActionContext(signer.ToAddress(), targetTrie); + IActionContext context = CreateActionContext(signer.Address, targetTrie); targetAccount = targetAccount.SetState(addr1, new Text("One")); targetAccount = targetAccount.SetState(addr2, new Text("Two")); targetAccount = targetAccount.MintAsset( - context, signer.ToAddress(), new FungibleAssetValue(USD, 123, 45)); + context, signer.Address, new FungibleAssetValue(USD, 123, 45)); targetTrie = Commit(stateStore, targetTrie, targetAccount.Delta); sourceTrie = targetTrie; @@ -88,13 +88,13 @@ public void Diff() sourceAccount = sourceAccount.SetState(addr2, new Text("Two_")); sourceAccount = sourceAccount.SetState(addr3, new Text("Three")); sourceAccount = sourceAccount.MintAsset( - context, signer.ToAddress(), new FungibleAssetValue(USD, 456, 78)); + context, signer.Address, new FungibleAssetValue(USD, 456, 78)); sourceAccount = sourceAccount.MintAsset( - context, signer.ToAddress(), new FungibleAssetValue(KRW, 10, 0)); + context, signer.Address, new FungibleAssetValue(KRW, 10, 0)); sourceAccount = sourceAccount.BurnAsset( - context, signer.ToAddress(), new FungibleAssetValue(KRW, 10, 0)); + context, signer.Address, new FungibleAssetValue(KRW, 10, 0)); sourceAccount = sourceAccount.MintAsset( - context, signer.ToAddress(), new FungibleAssetValue(JPY, 321, 0)); + context, signer.Address, new FungibleAssetValue(JPY, 321, 0)); sourceAccount = sourceAccount.SetValidator(new Validator(signer.PublicKey, 1)); sourceTrie = Commit(stateStore, sourceTrie, sourceAccount.Delta); @@ -107,10 +107,10 @@ public void Diff() Assert.Equal(2, diff.FungibleAssetValueDiffs.Count); // KRW is treated as unchanged Assert.Equal( (new Integer(12345), new Integer(12345 + 45678)), - diff.FungibleAssetValueDiffs[(signer.ToAddress(), USD.Hash)]); + diff.FungibleAssetValueDiffs[(signer.Address, USD.Hash)]); Assert.Equal( (new Integer(0), new Integer(321)), - diff.FungibleAssetValueDiffs[(signer.ToAddress(), JPY.Hash)]); + diff.FungibleAssetValueDiffs[(signer.Address, JPY.Hash)]); Assert.Equal(2, diff.TotalSupplyDiffs.Count); // KRW is treated as unchanged Assert.Equal( @@ -133,7 +133,7 @@ public void Diff() Assert.Single(diff.FungibleAssetValueDiffs); // Only USD is tracked Assert.Equal( (new Integer(12345 + 45678), new Integer(12345)), - diff.FungibleAssetValueDiffs[(signer.ToAddress(), USD.Hash)]); + diff.FungibleAssetValueDiffs[(signer.Address, USD.Hash)]); Assert.Single(diff.TotalSupplyDiffs); // Only USD is tracked Assert.Equal( (new Integer(12345 + 45678), new Integer(12345)), diff --git a/Libplanet.Tests/Action/AccountTest.cs b/Libplanet.Tests/Action/AccountTest.cs index a808e1d10b..7b23f3a788 100644 --- a/Libplanet.Tests/Action/AccountTest.cs +++ b/Libplanet.Tests/Action/AccountTest.cs @@ -38,7 +38,7 @@ protected AccountTest(ITestOutputHelper output) new PrivateKey(), }; - _addr = _keys.Select(AddressExtensions.ToAddress).ToArray(); + _addr = _keys.Select(key => key.Address).ToArray(); _currencies = new[] { diff --git a/Libplanet.Tests/Action/ActionEvaluatorTest.cs b/Libplanet.Tests/Action/ActionEvaluatorTest.cs index 13a2d3bdf4..d883fa9555 100644 --- a/Libplanet.Tests/Action/ActionEvaluatorTest.cs +++ b/Libplanet.Tests/Action/ActionEvaluatorTest.cs @@ -63,7 +63,7 @@ public void Idempotent() const int repeatCount = 2; var signer = new PrivateKey(); var timestamp = DateTimeOffset.UtcNow; - var txAddress = signer.ToAddress(); + var txAddress = signer.Address; var txs = new[] { Transaction.Create( @@ -78,7 +78,7 @@ public void Idempotent() protocolVersion: Block.CurrentProtocolVersion, index: 0, timestamp: timestamp, - miner: GenesisProposer.PublicKey.ToAddress(), + miner: GenesisProposer.Address, publicKey: GenesisProposer.PublicKey, previousHash: null, txHash: BlockContent.DeriveTxHash(txs), @@ -122,14 +122,14 @@ public void Idempotent() public void Evaluate() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; long blockIndex = 1; var action = new EvaluateTestAction() { - BlockIndexKey = new PrivateKey().ToAddress(), - MinerKey = new PrivateKey().ToAddress(), - SignerKey = new PrivateKey().ToAddress(), + BlockIndexKey = new PrivateKey().Address, + MinerKey = new PrivateKey().Address, + SignerKey = new PrivateKey().Address, }; var store = new MemoryStore(); @@ -156,7 +156,7 @@ public void Evaluate() Assert.Single(evaluations); Assert.Null(evaluations.Single().Exception); Assert.Equal(chain.GetState(action.SignerKey), (Text)address.ToHex()); - Assert.Equal(chain.GetState(action.MinerKey), (Text)miner.ToAddress().ToHex()); + Assert.Equal(chain.GetState(action.MinerKey), (Text)miner.Address.ToHex()); var state = chain.GetState(action.BlockIndexKey); Assert.Equal((long)(Integer)state, blockIndex); } @@ -165,7 +165,7 @@ public void Evaluate() public void EvaluateWithException() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var action = new ThrowException { ThrowOnRehearsal = false, ThrowOnExecution = true }; @@ -200,7 +200,7 @@ public void EvaluateWithException() public void EvaluateWithCriticalException() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var action = new ThrowException { @@ -336,7 +336,7 @@ DumbAction MakeAction(Address address, char identifier, Address? transferTo = nu block1Txs[expect.TxIdx].Actions[expect.ActionIdx], eval.Action.PlainValue); Assert.Equal(expect.Signer, eval.InputContext.Signer); - Assert.Equal(GenesisProposer.ToAddress(), eval.InputContext.Miner); + Assert.Equal(GenesisProposer.Address, eval.InputContext.Miner); Assert.Equal(block1.Index, eval.InputContext.BlockIndex); randomValue = eval.InputContext.GetRandom().Next(); Assert.Equal( @@ -458,7 +458,7 @@ DumbAction MakeAction(Address address, char identifier, Address? transferTo = nu block2Txs[expect.TxIdx].Actions[expect.Item2], eval.Action.PlainValue); Assert.Equal(expect.Signer, eval.InputContext.Signer); - Assert.Equal(GenesisProposer.ToAddress(), eval.InputContext.Miner); + Assert.Equal(GenesisProposer.Address, eval.InputContext.Miner); Assert.Equal(block2.Index, eval.InputContext.BlockIndex); Assert.False(eval.InputContext.Rehearsal); Assert.Null(eval.Exception); @@ -489,7 +489,7 @@ DumbAction MakeAction(Address address, char identifier, Address? transferTo = nu public void EvaluateTx() { PrivateKey[] keys = { new PrivateKey(), new PrivateKey(), new PrivateKey() }; - Address[] addresses = keys.Select(AddressExtensions.ToAddress).ToArray(); + Address[] addresses = keys.Select(key => key.Address).ToArray(); DumbAction[] actions = { new DumbAction( @@ -839,14 +839,14 @@ public void OrderTxsForEvaluation( (signerNoncesPair, nonce) => (signerNoncesPair.signer, nonce)) .Select(signerNoncePair => { - Address targetAddress = signerNoncePair.signer.ToAddress(); + Address targetAddress = signerNoncePair.signer.Address; return Transaction.Create( nonce: signerNoncePair.nonce, privateKey: signerNoncePair.signer, genesisHash: null, actions: new[] { - new RandomAction(signerNoncePair.signer.ToAddress()), + new RandomAction(signerNoncePair.signer.Address), }.ToPlainValues(), updatedAddresses: ImmutableHashSet.Create(targetAddress), timestamp: epoch @@ -868,7 +868,7 @@ public void OrderTxsForEvaluation( // Sanity check. Assert.True(originalAddresses.SequenceEqual( - signers.Select(signer => signer.ToAddress().ToString()))); + signers.Select(signer => signer.Address.ToString()))); var orderedTxs = ActionEvaluator.OrderTxsForEvaluation( protocolVersion: protocolVersion, @@ -886,7 +886,7 @@ public void OrderTxsForEvaluation( // Check nonces are ordered. foreach (var signer in signers) { - var signerTxs = orderedTxs.Where(tx => tx.Signer == signer.ToAddress()); + var signerTxs = orderedTxs.Where(tx => tx.Signer == signer.Address); Assert.Equal(signerTxs.OrderBy(tx => tx.Nonce).ToArray(), signerTxs.ToArray()); } @@ -907,7 +907,7 @@ public void TotalUpdatedFungibleAssets() genesisBlock: _storeFx.GenesisBlock, privateKey: ChainPrivateKey); var privateKeys = Enumerable.Range(0, 3).Select(_ => new PrivateKey()).ToList(); - var addresses = privateKeys.Select(privateKey => privateKey.ToAddress()).ToList(); + var addresses = privateKeys.Select(privateKey => privateKey.Address).ToList(); // Only addresses[0] and addresses[1] are able to mint var currency = Currency.Uncapped( @@ -945,7 +945,7 @@ public void TotalUpdatedFungibleAssets() public void EvaluateActionAndCollectFee() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; Currency foo = Currency.Uncapped( "FOO", 18, @@ -1000,14 +1000,14 @@ public void EvaluateActionAndCollectFee() Assert.Equal( FungibleAssetValue.FromRawValue(foo, 1), chain.GetAccountState( - evaluations.Single().OutputState).GetBalance(miner.ToAddress(), foo)); + evaluations.Single().OutputState).GetBalance(miner.Address, foo)); } [Fact] public void EvaluateThrowingExceedGasLimit() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; Currency foo = Currency.Uncapped( "FOO", 18, @@ -1070,14 +1070,14 @@ public void EvaluateThrowingExceedGasLimit() Assert.Equal( FungibleAssetValue.FromRawValue(foo, 5), chain.GetAccountState( - evaluations.Single().OutputState).GetBalance(miner.ToAddress(), foo)); + evaluations.Single().OutputState).GetBalance(miner.Address, foo)); } [Fact] public void EvaluateThrowingInsufficientBalanceForGasFee() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; Currency foo = Currency.Uncapped( "FOO", 18, @@ -1139,7 +1139,7 @@ public void EvaluateThrowingInsufficientBalanceForGasFee() public void EvaluateMinusGasFee() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; Currency foo = Currency.Uncapped( "FOO", 18, diff --git a/Libplanet.Tests/AddressExtensionsTest.cs b/Libplanet.Tests/AddressExtensionsTest.cs deleted file mode 100644 index c2c0389687..0000000000 --- a/Libplanet.Tests/AddressExtensionsTest.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Libplanet.Crypto; -using Xunit; - -namespace Libplanet.Tests -{ - public class AddressExtensionsTest - { - [Fact] - public void ToAddress() - { - var privateKey = new PrivateKey( - new byte[] - { - 0xbe, 0xe6, 0xf9, 0xcc, 0x62, 0x41, 0x27, 0x60, 0xb3, 0x69, 0x6e, - 0x05, 0xf6, 0xfb, 0x4a, 0xbe, 0xb9, 0xe8, 0x3c, 0x4f, 0x94, 0x4f, - 0x83, 0xfd, 0x62, 0x08, 0x1b, 0x74, 0x54, 0xcb, 0xc0, 0x38, - } - ); - var expected = new Address("f45A22dD63f6428e85eE0a6E13a763278f57626d"); - Assert.Equal(expected, privateKey.ToAddress()); - Assert.Equal(expected, privateKey.PublicKey.ToAddress()); - } - } -} diff --git a/Libplanet.Tests/Assets/CurrencyTest.cs b/Libplanet.Tests/Assets/CurrencyTest.cs index 7ce5e665cf..b48902bd9a 100644 --- a/Libplanet.Tests/Assets/CurrencyTest.cs +++ b/Libplanet.Tests/Assets/CurrencyTest.cs @@ -124,7 +124,7 @@ public void Hash() [Fact] public void AllowsToMint() { - Address addressC = new PrivateKey().ToAddress(); + Address addressC = new PrivateKey().Address; Currency currency = Currency.Uncapped("FOO", 0, AddressA); Assert.True(currency.AllowsToMint(AddressA)); Assert.False(currency.AllowsToMint(AddressB)); diff --git a/Libplanet.Tests/Blockchain/BlockChainTest.Append.cs b/Libplanet.Tests/Blockchain/BlockChainTest.Append.cs index 4ff7204fe4..18f674f76a 100644 --- a/Libplanet.Tests/Blockchain/BlockChainTest.Append.cs +++ b/Libplanet.Tests/Blockchain/BlockChainTest.Append.cs @@ -172,8 +172,8 @@ Func getTxExecution Transaction tx1Transfer = _fx.MakeTransaction( new[] { - new DumbAction(pk.ToAddress(), "foo", pk.ToAddress(), addresses[1], 10), - new DumbAction(addresses[0], "bar", pk.ToAddress(), addresses[2], 20), + new DumbAction(pk.Address, "foo", pk.Address, addresses[1], 10), + new DumbAction(addresses[0], "bar", pk.Address, addresses[2], 20), }, nonce: 0, privateKey: pk @@ -183,7 +183,7 @@ Func getTxExecution { // As it tries to transfer a negative value, it throws // ArgumentOutOfRangeException: - new DumbAction(pk.ToAddress(), "foo", addresses[0], addresses[1], -5), + new DumbAction(pk.Address, "foo", addresses[0], addresses[1], -5), }, nonce: 1, privateKey: pk @@ -191,7 +191,7 @@ Func getTxExecution Transaction tx3Transfer = _fx.MakeTransaction( new[] { - new DumbAction(pk.ToAddress(), "foo", pk.ToAddress(), addresses[1], 5), + new DumbAction(pk.Address, "foo", pk.Address, addresses[1], 5), }, nonce: 2, privateKey: pk @@ -211,22 +211,22 @@ Func getTxExecution var accountDiff1 = AccountDiff.Create(inputAccount1, outputAccount1); Assert.Equal( - (new Address[] { addresses[0], pk.ToAddress() }).ToImmutableHashSet(), + (new Address[] { addresses[0], pk.Address }).ToImmutableHashSet(), accountDiff1.StateDiffs.Select(kv => kv.Key).ToImmutableHashSet()); Assert.Equal( - (new Address[] { addresses[1], addresses[2], pk.ToAddress() }) + (new Address[] { addresses[1], addresses[2], pk.Address }) .ToImmutableHashSet(), accountDiff1.FungibleAssetValueDiffs.Select(kv => kv.Key.Item1) .ToImmutableHashSet()); Assert.Equal( new Text("foo"), - outputAccount1.GetState(pk.ToAddress())); + outputAccount1.GetState(pk.Address)); Assert.Equal( new Text("foo,bar"), outputAccount1.GetState(addresses[0])); Assert.Equal( DumbAction.DumbCurrency * -30, - outputAccount1.GetBalance(pk.ToAddress(), DumbAction.DumbCurrency)); + outputAccount1.GetBalance(pk.Address, DumbAction.DumbCurrency)); Assert.Equal( DumbAction.DumbCurrency * 10, outputAccount1.GetBalance(addresses[1], DumbAction.DumbCurrency)); @@ -250,7 +250,7 @@ Func getTxExecution Assert.IsType>(txExecution3.OutputState)); Assert.Equal( DumbAction.DumbCurrency * -35, - outputAccount3.GetBalance(pk.ToAddress(), DumbAction.DumbCurrency)); + outputAccount3.GetBalance(pk.Address, DumbAction.DumbCurrency)); Assert.Equal( DumbAction.DumbCurrency * 15, outputAccount3.GetBalance(addresses[1], DumbAction.DumbCurrency)); @@ -359,8 +359,8 @@ public void AppendBlockWithPolicyViolationTx() TxPolicyViolationException IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); - return tx.Signer.Equals(validAddress) || tx.Signer.Equals(_fx.Proposer.ToAddress()) + var validAddress = validKey.Address; + return tx.Signer.Equals(validAddress) || tx.Signer.Equals(_fx.Proposer.Address) ? null : new TxPolicyViolationException("invalid signer", tx.Id); } @@ -594,7 +594,7 @@ public void CachedActionEvaluationWrittenOnAppend() new DumbAction[] { new DumbAction( - dummy.ToAddress(), "foo", dummy.ToAddress(), dummy.ToAddress(), 10), + dummy.Address, "foo", dummy.Address, dummy.Address, 10), }.ToPlainValues()), txA1 = Transaction.Create( 1, @@ -603,7 +603,7 @@ public void CachedActionEvaluationWrittenOnAppend() new DumbAction[] { new DumbAction( - dummy.ToAddress(), "bar", dummy.ToAddress(), dummy.ToAddress(), 20), + dummy.Address, "bar", dummy.Address, dummy.Address, 20), }.ToPlainValues()); _blockChain.StageTransaction(txA0); _blockChain.StageTransaction(txA1); diff --git a/Libplanet.Tests/Blockchain/BlockChainTest.Internals.cs b/Libplanet.Tests/Blockchain/BlockChainTest.Internals.cs index 4a560f1c5f..f245047020 100644 --- a/Libplanet.Tests/Blockchain/BlockChainTest.Internals.cs +++ b/Libplanet.Tests/Blockchain/BlockChainTest.Internals.cs @@ -46,7 +46,7 @@ Transaction MkTx(PrivateKey key, long nonce, DateTimeOffset? ts = null) => PrivateKey e = new PrivateKey(); List
signers = new List
() { - a.ToAddress(), b.ToAddress(), c.ToAddress(), d.ToAddress(), e.ToAddress(), + a.Address, b.Address, c.Address, d.Address, e.Address, }; // A normal case and corner cases: @@ -85,13 +85,13 @@ Transaction MkTx(PrivateKey key, long nonce, DateTimeOffset? ts = null) => // A is prioritized over B, C, D, E: IComparer priority = Comparer.Create( - (tx1, tx2) => tx1.Signer.Equals(a.ToAddress()) ? -1 : 1 + (tx1, tx2) => tx1.Signer.Equals(a.Address) ? -1 : 1 ); stagedTransactions = _blockChain.ListStagedTransactions(priority); foreach (var tx in stagedTransactions.Take(3)) { - Assert.True(tx.Signer.Equals(a.ToAddress())); + Assert.True(tx.Signer.Equals(a.Address)); } // List is ordered by nonce. diff --git a/Libplanet.Tests/Blockchain/BlockChainTest.ProposeBlock.cs b/Libplanet.Tests/Blockchain/BlockChainTest.ProposeBlock.cs index 8c892a46f3..e78bc7b3bc 100644 --- a/Libplanet.Tests/Blockchain/BlockChainTest.ProposeBlock.cs +++ b/Libplanet.Tests/Blockchain/BlockChainTest.ProposeBlock.cs @@ -27,7 +27,7 @@ public void ProposeBlock() Func getMaxTransactionsBytes = _blockChain.Policy.GetMaxTransactionsBytes; Assert.Equal(1, _blockChain.Count); AssertBencodexEqual( - (Text)$"{GenesisProposer.ToAddress()}", + (Text)$"{GenesisProposer.Address}", _blockChain.GetState(default)); var proposerA = new PrivateKey(); @@ -38,7 +38,7 @@ public void ProposeBlock() Assert.True( block.MarshalBlock().EncodingLength <= getMaxTransactionsBytes(block.Index)); AssertBencodexEqual( - (Text)$"{GenesisProposer.ToAddress()},{proposerA.ToAddress()}", + (Text)$"{GenesisProposer.Address},{proposerA.Address}", _blockChain.GetState(default) ); @@ -53,7 +53,7 @@ public void ProposeBlock() anotherBlock.MarshalBlock().EncodingLength <= getMaxTransactionsBytes(anotherBlock.Index)); Text expected = new Text( - $"{GenesisProposer.ToAddress()},{proposerA.ToAddress()},{proposerB.ToAddress()}"); + $"{GenesisProposer.Address},{proposerA.Address},{proposerB.Address}"); AssertBencodexEqual( expected, _blockChain.GetState(default) @@ -67,7 +67,7 @@ public void ProposeBlock() Assert.True( block3.MarshalBlock().EncodingLength <= getMaxTransactionsBytes(block3.Index)); expected = new Text( - $"{GenesisProposer.ToAddress()},{proposerA.ToAddress()},{proposerB.ToAddress()}"); + $"{GenesisProposer.Address},{proposerA.Address},{proposerB.Address}"); AssertBencodexEqual( expected, _blockChain.GetState(default) @@ -110,7 +110,7 @@ public void ProposeBlock() block4.MarshalBlock().EncodingLength <= getMaxTransactionsBytes(block4.Index)); Assert.Equal(3, block4.Transactions.Count()); expected = new Text( - $"{GenesisProposer.ToAddress()},{proposerA.ToAddress()},{proposerB.ToAddress()}"); + $"{GenesisProposer.Address},{proposerA.Address},{proposerB.Address}"); AssertBencodexEqual( expected, _blockChain.GetState(default) @@ -138,7 +138,7 @@ public void CanProposeInvalidGenesisBlock() null, actions: new[] { - new DumbAction(new PrivateKey().PublicKey.ToAddress(), "foo"), + new DumbAction(new PrivateKey().Address, "foo"), }.ToPlainValues()), }.ToImmutableList()); Assert.Throws(() => BlockChain.Create( @@ -175,7 +175,7 @@ public void CanProposeInvalidBlock() _blockChain.Genesis.Hash, new[] { - new DumbAction(new PrivateKey().PublicKey.ToAddress(), "foo"), + new DumbAction(new PrivateKey().Address, "foo"), }.ToPlainValues()), }.ToImmutableList(); @@ -194,11 +194,11 @@ public void ProposeBlockWithPendingTxs() var keyC = new PrivateKey(); var keyD = new PrivateKey(); var keyE = new PrivateKey(); - var addrA = keyA.ToAddress(); - var addrB = keyB.ToAddress(); - var addrC = keyC.ToAddress(); - var addrD = keyD.ToAddress(); - var addrE = keyE.ToAddress(); + var addrA = keyA.Address; + var addrB = keyB.Address; + var addrC = keyC.Address; + var addrD = keyD.Address; + var addrE = keyE.Address; var txs = new[] { @@ -330,8 +330,8 @@ public void ProposeBlockWithPolicyViolationTx() TxPolicyViolationException IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); - return tx.Signer.Equals(validAddress) || tx.Signer.Equals(_fx.Proposer.ToAddress()) + var validAddress = validKey.Address; + return tx.Signer.Equals(validAddress) || tx.Signer.Equals(_fx.Proposer.Address) ? null : new TxPolicyViolationException("invalid signer", tx.Id); } @@ -441,10 +441,10 @@ public void ProposeBlockWithLowerNonces() public void ProposeBlockWithBlockAction() { var privateKey1 = new PrivateKey(); - var address1 = privateKey1.ToAddress(); + var address1 = privateKey1.Address; var privateKey2 = new PrivateKey(); - var address2 = privateKey2.ToAddress(); + var address2 = privateKey2.Address; var blockAction = new DumbAction(address1, "foo"); var policy = new BlockPolicy(blockAction); @@ -493,9 +493,9 @@ public void ProposeBlockWithTxPriority() var keyA = new PrivateKey(); var keyB = new PrivateKey(); var keyC = new PrivateKey(); - Address a = keyA.ToAddress(); // Rank 0 - Address b = keyB.ToAddress(); // Rank 1 - Address c = keyC.ToAddress(); // Rank 2 + Address a = keyA.Address; // Rank 0 + Address b = keyB.Address; // Rank 1 + Address c = keyC.Address; // Rank 2 int Rank(Address address) => address.Equals(a) ? 0 : address.Equals(b) ? 1 : 2; Transaction[] txsA = Enumerable.Range(0, 50) .Select(nonce => _fx.MakeTransaction(nonce: nonce, privateKey: keyA)) @@ -548,7 +548,7 @@ public void ProposeBlockWithLastCommit() public void IgnoreLowerNonceTxsAndPropose() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var txsA = Enumerable.Range(0, 3) .Select(nonce => _fx.MakeTransaction( nonce: nonce, privateKey: privateKey, timestamp: DateTimeOffset.Now)) @@ -607,9 +607,9 @@ public void GatherTransactionsToPropose() var keyA = new PrivateKey(); var keyB = new PrivateKey(); var keyC = new PrivateKey(); - Address a = keyA.ToAddress(); - Address b = keyB.ToAddress(); - Address c = keyC.ToAddress(); + Address a = keyA.Address; + Address b = keyB.Address; + Address c = keyC.Address; _logger.Verbose("Address {Name}: {Address}", nameof(a), a); _logger.Verbose("Address {Name}: {Address}", nameof(b), b); _logger.Verbose("Address {Name}: {Address}", nameof(c), c); diff --git a/Libplanet.Tests/Blockchain/BlockChainTest.ValidateNextBlock.cs b/Libplanet.Tests/Blockchain/BlockChainTest.ValidateNextBlock.cs index ce70e70b33..a2627694b4 100644 --- a/Libplanet.Tests/Blockchain/BlockChainTest.ValidateNextBlock.cs +++ b/Libplanet.Tests/Blockchain/BlockChainTest.ValidateNextBlock.cs @@ -45,7 +45,7 @@ public void ValidateNextBlockProtocolVersion() protocolVersion: protocolVersion, index: 1L, timestamp: _fx.GenesisBlock.Timestamp.AddDays(1), - miner: _fx.Proposer.PublicKey.ToAddress(), + miner: _fx.Proposer.Address, publicKey: protocolVersion >= 2 ? _fx.Proposer.PublicKey : null, previousHash: _fx.GenesisBlock.Hash, txHash: null, @@ -59,7 +59,7 @@ public void ValidateNextBlockProtocolVersion() protocolVersion: protocolVersion - 1, index: 2L, timestamp: _fx.GenesisBlock.Timestamp.AddDays(2), - miner: _fx.Proposer.PublicKey.ToAddress(), + miner: _fx.Proposer.Address, publicKey: protocolVersion - 1 >= 2 ? _fx.Proposer.PublicKey : null, previousHash: block1.Hash, txHash: null, @@ -76,7 +76,7 @@ public void ValidateNextBlockProtocolVersion() protocolVersion: BlockMetadata.CurrentProtocolVersion + 1, index: 2L, timestamp: _fx.GenesisBlock.Timestamp.AddDays(2), - miner: _fx.Proposer.PublicKey.ToAddress(), + miner: _fx.Proposer.Address, publicKey: _fx.Proposer.PublicKey, previousHash: block1.Hash, txHash: null, @@ -205,7 +205,7 @@ public void ValidateNextBlockInvalidStateRootHash() protocolVersion: BlockMetadata.CurrentProtocolVersion, index: 1, timestamp: genesisBlock.Timestamp.AddSeconds(1), - miner: TestUtils.GenesisProposer.PublicKey.ToAddress(), + miner: TestUtils.GenesisProposer.Address, publicKey: TestUtils.GenesisProposer.PublicKey, previousHash: genesisBlock.Hash, txHash: null, @@ -529,7 +529,7 @@ ImmutableArray GenerateVotes( GenerateVote(privateKey2, flag2), GenerateVote(privateKey3, flag3), GenerateVote(privateKey4, flag4), - }.OrderBy(vote => vote.ValidatorPublicKey.ToAddress()).ToImmutableArray(); + }.OrderBy(vote => vote.ValidatorPublicKey.Address).ToImmutableArray(); } var fullBlockCommit = new BlockCommit( diff --git a/Libplanet.Tests/Blockchain/BlockChainTest.cs b/Libplanet.Tests/Blockchain/BlockChainTest.cs index fa2355a049..74593122d1 100644 --- a/Libplanet.Tests/Blockchain/BlockChainTest.cs +++ b/Libplanet.Tests/Blockchain/BlockChainTest.cs @@ -77,7 +77,7 @@ public BlockChainTest(ITestOutputHelper output) protocolVersion: BlockMetadata.CurrentProtocolVersion, index: 1, timestamp: _fx.GenesisBlock.Timestamp.AddSeconds(1), - miner: _fx.Proposer.PublicKey.ToAddress(), + miner: _fx.Proposer.Address, publicKey: _fx.Proposer.PublicKey, previousHash: _fx.GenesisBlock.Hash, txHash: null, @@ -559,7 +559,7 @@ public void StateAfterForkingAndAddingExistingBlock() { var miner = new PrivateKey(); var signer = new PrivateKey(); - var address = signer.ToAddress(); + var address = signer.Address; var actions1 = new[] { new DumbAction(address, "foo") }; var actions2 = new[] { new DumbAction(address, "bar") }; @@ -689,12 +689,12 @@ public void ForkTxNonce() { // An active account, so that its some recent transactions became "stale" due to a fork. var privateKey = new PrivateKey(); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; // An inactive account, so that it has no recent transactions but only an old // transaction, so that its all transactions are stale-proof (stale-resistant). var lessActivePrivateKey = new PrivateKey(); - Address lessActiveAddress = lessActivePrivateKey.ToAddress(); + Address lessActiveAddress = lessActivePrivateKey.Address; var actions = new[] { new DumbAction(address, "foo") }; @@ -772,7 +772,7 @@ public void Swap(bool render) MakeFixturesForAppendTests(); var genesis = _blockChain.Genesis; var miner = new PrivateKey(); - var minerAddress = miner.ToAddress(); + var minerAddress = miner.Address; Block block1 = _blockChain.ProposeBlock( miner, txs1.ToImmutableList(), CreateBlockCommit(_blockChain.Tip)); @@ -1124,7 +1124,7 @@ public void GetStateOnlyDrillsDownUntilRequestedAddressesAreFound() for (int i = 0; i < addresses.Length; ++i) { var privateKey = new PrivateKey(); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; addresses[i] = address; DumbAction[] actions = { @@ -1181,7 +1181,7 @@ public void GetStateReturnsEarlyForNonexistentAccount() } tracker.ClearLogs(); - Address nonexistent = new PrivateKey().ToAddress(); + Address nonexistent = new PrivateKey().Address; IValue result = chain.GetState(nonexistent); Assert.Null(result); var callCount = tracker.Logs.Where( @@ -1233,7 +1233,7 @@ public void GetStateReturnsValidStateAfterFork() public void GetStateReturnsLatestStatesWhenMultipleAddresses() { var privateKeys = Enumerable.Range(1, 10).Select(_ => new PrivateKey()).ToList(); - var addresses = privateKeys.Select(AddressExtensions.ToAddress).ToList(); + var addresses = privateKeys.Select(key => key.Address).ToList(); var policy = new NullBlockPolicy(); var blockChainStates = new BlockChainStates(_fx.Store, _fx.StateStore); var chain = new BlockChain( @@ -1356,7 +1356,7 @@ public void FindBranchPoint() public void GetNextTxNonce() { var privateKey = new PrivateKey(); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; var actions = new[] { new DumbAction(_fx.Address1, "foo") }; var genesis = _blockChain.Genesis; @@ -1425,7 +1425,7 @@ public void GetNextTxNonce() public void GetNextTxNonceWithStaleTx() { var privateKey = new PrivateKey(); - var address = privateKey.ToAddress(); + var address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo") }; Transaction[] txs = @@ -1513,7 +1513,7 @@ IReadOnlyList txs public void MakeTransactionWithSystemAction() { var privateKey = new PrivateKey(); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; var action = new Initialize( new ValidatorSet( new List() { new Validator(new PrivateKey().PublicKey, 1) }), @@ -1545,7 +1545,7 @@ public void MakeTransactionWithSystemAction() public void MakeTransactionWithCustomActions() { var privateKey = new PrivateKey(); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo") }; _blockChain.MakeTransaction(privateKey, actions); @@ -1573,7 +1573,7 @@ public void MakeTransactionWithCustomActions() public async Task MakeTransactionConcurrency() { var privateKey = new PrivateKey(); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; var actions = new[] { new DumbAction(address, "foo") }; var tasks = Enumerable.Range(0, 10) @@ -1614,15 +1614,15 @@ public void BlockActionWithMultipleAddress() miner2, lastCommit: CreateBlockCommit(_blockChain.Tip)); _blockChain.Append(block3, CreateBlockCommit(block3)); - IValue miner1state = _blockChain.GetState(miner1.ToAddress()); - IValue miner2state = _blockChain.GetState(miner2.ToAddress()); + IValue miner1state = _blockChain.GetState(miner1.Address); + IValue miner2state = _blockChain.GetState(miner2.Address); IValue rewardState = _blockChain.GetState(rewardRecordAddress); AssertBencodexEqual((Integer)2, miner1state); AssertBencodexEqual((Integer)1, miner2state); AssertBencodexEqual( - (Text)$"{miner0},{miner1.ToAddress()},{miner1.ToAddress()},{miner2.ToAddress()}", + (Text)$"{miner0},{miner1.Address},{miner1.Address},{miner2.Address}", rewardState ); } @@ -1692,7 +1692,7 @@ internal static (Address, Address[] Addresses, BlockChain Chain) blockChainStates: chainStates, actionEvaluator: actionEvaluator); var privateKey = new PrivateKey(); - Address signer = privateKey.ToAddress(); + Address signer = privateKey.Address; void BuildIndex(Guid id, Block block) { @@ -1712,7 +1712,7 @@ void BuildIndex(Guid id, Block block) IImmutableDictionary dirty = evals.GetDirtyStates(); const int accountsCount = 5; Address[] addresses = Enumerable.Repeat(null, accountsCount) - .Select(_ => new PrivateKey().ToAddress()) + .Select(_ => new PrivateKey().Address) .ToArray(); for (int i = 0; i < 2; ++i) { @@ -1771,7 +1771,7 @@ protected virtual StoreFixture GetStoreFixture(IAction blockAction) => ) { Address[] addresses = keys is PrivateKey[] ks - ? ks.Select(AddressExtensions.ToAddress).ToArray() + ? ks.Select(k => k.Address).ToArray() : new[] { _fx.Address1, @@ -2113,7 +2113,7 @@ private void ValidateNextBlockCommitOnValidatorSetChange() DateTimeOffset.UtcNow, pk.PublicKey, VoteFlag.PreCommit).Sign(pk)) - .OrderBy(vote => vote.ValidatorPublicKey.ToAddress()) + .OrderBy(vote => vote.ValidatorPublicKey.Address) .ToImmutableArray()); blockChain.Append(newBlock, newBlockCommit); @@ -2135,7 +2135,7 @@ private void ValidateNextBlockCommitOnValidatorSetChange() DateTimeOffset.UtcNow, pk.PublicKey, VoteFlag.PreCommit).Sign(pk)) - .OrderBy(vote => vote.ValidatorPublicKey.ToAddress()) + .OrderBy(vote => vote.ValidatorPublicKey.Address) .ToImmutableArray()); blockChain.Append(nextBlock, nextBlockCommit); diff --git a/Libplanet.Tests/Blockchain/Policies/BlockPolicyTest.cs b/Libplanet.Tests/Blockchain/Policies/BlockPolicyTest.cs index 947c0bf12d..3a6e2eb965 100644 --- a/Libplanet.Tests/Blockchain/Policies/BlockPolicyTest.cs +++ b/Libplanet.Tests/Blockchain/Policies/BlockPolicyTest.cs @@ -81,7 +81,7 @@ public void ValidateNextBlockTx() TxPolicyViolationException IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); + var validAddress = validKey.Address; return tx.Signer.Equals(validAddress) ? null : new TxPolicyViolationException("invalid signer", tx.Id); @@ -110,7 +110,7 @@ public void ValidateNextBlockTxWithInnerException() TxPolicyViolationException IsSignerValid( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); + var validAddress = validKey.Address; return tx.Signer.Equals(validAddress) ? null : new TxPolicyViolationException("invalid signer", tx.Id); @@ -120,7 +120,7 @@ TxPolicyViolationException IsSignerValid( TxPolicyViolationException IsSignerValidWithInnerException( BlockChain chain, Transaction tx) { - var validAddress = validKey.PublicKey.ToAddress(); + var validAddress = validKey.Address; return tx.Signer.Equals(validAddress) ? null : new TxPolicyViolationException( @@ -220,7 +220,7 @@ public void GetMaxTransactionsPerSignerPerBlock() privateKeys.ForEach( key => Assert.Equal( policyLimit, - block.Transactions.Count(tx => tx.Signer.Equals(key.ToAddress())))); + block.Transactions.Count(tx => tx.Signer.Equals(key.Address)))); } } } diff --git a/Libplanet.Tests/Blocks/BlockMetadataTest.cs b/Libplanet.Tests/Blocks/BlockMetadataTest.cs index 51e9c9127c..4d6a5d0b46 100644 --- a/Libplanet.Tests/Blocks/BlockMetadataTest.cs +++ b/Libplanet.Tests/Blocks/BlockMetadataTest.cs @@ -274,7 +274,7 @@ public void ValidateLastCommit() protocolVersion: BlockMetadata.CurrentProtocolVersion, index: 2, timestamp: timestamp, - miner: validatorA.PublicKey.ToAddress(), + miner: validatorA.Address, publicKey: validatorA.PublicKey, previousHash: blockHash, txHash: null, @@ -295,7 +295,7 @@ public void ValidateLastCommit() protocolVersion: BlockMetadata.CurrentProtocolVersion, index: 2, timestamp: timestamp, - miner: validatorA.PublicKey.ToAddress(), + miner: validatorA.Address, publicKey: validatorA.PublicKey, previousHash: GenesisHash, txHash: null, @@ -322,7 +322,7 @@ public void ValidateLastCommit() protocolVersion: BlockMetadata.CurrentProtocolVersion, index: 2, timestamp: timestamp, - miner: validatorA.PublicKey.ToAddress(), + miner: validatorA.Address, publicKey: validatorA.PublicKey, previousHash: blockHash, txHash: null, diff --git a/Libplanet.Tests/Blocks/BlockTest.cs b/Libplanet.Tests/Blocks/BlockTest.cs index 50c8d58d35..8284accd61 100644 --- a/Libplanet.Tests/Blocks/BlockTest.cs +++ b/Libplanet.Tests/Blocks/BlockTest.cs @@ -68,7 +68,7 @@ public void TransactionOrderIdempotent() null, new[] { - new RandomAction(signer.ToAddress()), + new RandomAction(signer.Address), }.ToPlainValues())).ToImmutableArray(); var blockA = ProposeGenesis(timestamp: timestamp, transactions: txs); var blockB = ProposeGenesis(timestamp: timestamp, transactions: txs); diff --git a/Libplanet.Tests/Blocks/InvalidBlockTxCountPerSignerExceptionTest.cs b/Libplanet.Tests/Blocks/InvalidBlockTxCountPerSignerExceptionTest.cs index 2f444e3aae..97671c59f8 100644 --- a/Libplanet.Tests/Blocks/InvalidBlockTxCountPerSignerExceptionTest.cs +++ b/Libplanet.Tests/Blocks/InvalidBlockTxCountPerSignerExceptionTest.cs @@ -15,7 +15,7 @@ public InvalidBlockTxCountPerSignerExceptionTest() [Fact] public void Serialization() { - Address signer = new PrivateKey().PublicKey.ToAddress(); + Address signer = new PrivateKey().Address; var e = new InvalidBlockTxCountPerSignerException("A message.", signer, 10); var f = new BinaryFormatter(); InvalidBlockTxCountPerSignerException e2; diff --git a/Libplanet.Tests/Consensus/ValidatorSetTest.cs b/Libplanet.Tests/Consensus/ValidatorSetTest.cs index 1aaa752263..de75c01330 100644 --- a/Libplanet.Tests/Consensus/ValidatorSetTest.cs +++ b/Libplanet.Tests/Consensus/ValidatorSetTest.cs @@ -126,7 +126,7 @@ public void ValidateBlockCommitValidators() .Select(_ => new PrivateKey()) .ToList(); var orderedPrivateKeys = unorderedPrivateKeys - .OrderBy(key => key.PublicKey.ToAddress()) + .OrderBy(key => key.Address) .ToList(); var validatorSet = new ValidatorSet(unorderedPrivateKeys.Select( key => new Validator(key.PublicKey, BigInteger.One)).ToList()); diff --git a/Libplanet.Tests/Crypto/PrivateKeyTest.cs b/Libplanet.Tests/Crypto/PrivateKeyTest.cs index 2e59a4ada0..a3125b6690 100644 --- a/Libplanet.Tests/Crypto/PrivateKeyTest.cs +++ b/Libplanet.Tests/Crypto/PrivateKeyTest.cs @@ -120,6 +120,21 @@ public void PublicKeyTest() ); } + [Fact] + public void AddressTest() + { + var privateKey = new PrivateKey( + new byte[] + { + 0xbe, 0xe6, 0xf9, 0xcc, 0x62, 0x41, 0x27, 0x60, 0xb3, 0x69, 0x6e, + 0x05, 0xf6, 0xfb, 0x4a, 0xbe, 0xb9, 0xe8, 0x3c, 0x4f, 0x94, 0x4f, + 0x83, 0xfd, 0x62, 0x08, 0x1b, 0x74, 0x54, 0xcb, 0xc0, 0x38, + } + ); + var expected = new Address("f45A22dD63f6428e85eE0a6E13a763278f57626d"); + Assert.Equal(expected, privateKey.Address); + } + [Fact] public void SignTest() { diff --git a/Libplanet.Tests/Crypto/PublicKeyTest.cs b/Libplanet.Tests/Crypto/PublicKeyTest.cs index 06951fce2d..1a59f41412 100644 --- a/Libplanet.Tests/Crypto/PublicKeyTest.cs +++ b/Libplanet.Tests/Crypto/PublicKeyTest.cs @@ -74,6 +74,22 @@ public void Format() ); } + [Fact] + public void AddressTest() + { + var privateKey = new PrivateKey( + new byte[] + { + 0xbe, 0xe6, 0xf9, 0xcc, 0x62, 0x41, 0x27, 0x60, 0xb3, 0x69, 0x6e, + 0x05, 0xf6, 0xfb, 0x4a, 0xbe, 0xb9, 0xe8, 0x3c, 0x4f, 0x94, 0x4f, + 0x83, 0xfd, 0x62, 0x08, 0x1b, 0x74, 0x54, 0xcb, 0xc0, 0x38, + } + ); + var publicKey = privateKey.PublicKey; + var expected = new Address("f45A22dD63f6428e85eE0a6E13a763278f57626d"); + Assert.Equal(expected, publicKey.Address); + } + [Fact] public void Verify() { diff --git a/Libplanet.Tests/Fixtures/BlockContentFixture.cs b/Libplanet.Tests/Fixtures/BlockContentFixture.cs index 2af59e76ca..490f323483 100644 --- a/Libplanet.Tests/Fixtures/BlockContentFixture.cs +++ b/Libplanet.Tests/Fixtures/BlockContentFixture.cs @@ -74,7 +74,7 @@ public BlockContentFixture() new UnsignedTx( new TxInvoice( genesisHash: GenesisHash, - updatedAddresses: new[] { Block1Tx0Key.ToAddress() }, + updatedAddresses: new[] { Block1Tx0Key.Address }, timestamp: new DateTimeOffset(2021, 9, 6, 17, 0, 1, 1, default), actions: new TxActionList(new IAction[] { @@ -94,7 +94,7 @@ public BlockContentFixture() new UnsignedTx( new TxInvoice( genesisHash: GenesisHash, - updatedAddresses: new[] { Block1Tx1Key.ToAddress() }, + updatedAddresses: new[] { Block1Tx1Key.Address }, timestamp: new DateTimeOffset(2021, 9, 6, 17, 0, 1, 1, default), actions: new TxActionList(new IAction[] { @@ -129,7 +129,7 @@ public BlockContentFixture() protocolVersion: 0, index: 0, timestamp: new DateTimeOffset(2021, 9, 6, 13, 46, 39, 123, kst), - miner: GenesisKey.ToAddress(), + miner: GenesisKey.Address, publicKey: null, previousHash: null, txHash: null, @@ -141,7 +141,7 @@ public BlockContentFixture() protocolVersion: 1, index: 1, timestamp: new DateTimeOffset(2021, 9, 6, 17, 1, 9, 45, kst), - miner: Block1Key.ToAddress(), + miner: Block1Key.Address, publicKey: null, previousHash: GenesisHash, txHash: BlockContent.DeriveTxHash(block1Transactions), diff --git a/Libplanet.Tests/Fixtures/IntegerSet.cs b/Libplanet.Tests/Fixtures/IntegerSet.cs index 89bdc2592e..8f15aa25d4 100644 --- a/Libplanet.Tests/Fixtures/IntegerSet.cs +++ b/Libplanet.Tests/Fixtures/IntegerSet.cs @@ -45,7 +45,7 @@ public IntegerSet( IEnumerable renderers = null) { PrivateKeys = initialStates.Select(_ => new PrivateKey()).ToImmutableArray(); - Addresses = PrivateKeys.Select(AddressExtensions.ToAddress).ToImmutableArray(); + Addresses = PrivateKeys.Select(key => key.Address).ToImmutableArray(); Actions = initialStates .Select((state, index) => new { State = state, Key = PrivateKeys[index] }) .Where(pair => !(pair.State is null)) @@ -64,7 +64,7 @@ public IntegerSet( new[] { pair.Action }.ToPlainValues(), null, null, - ImmutableHashSet
.Empty.Add(pair.Key.ToAddress()) + ImmutableHashSet
.Empty.Add(pair.Key.Address) ) ) .OrderBy(tx => tx.Id) @@ -107,7 +107,7 @@ public IntegerSet( public TxWithContext Sign(PrivateKey signer, params Arithmetic[] actions) { - Address signerAddress = signer.ToAddress(); + Address signerAddress = signer.Address; KeyBytes rawStateKey = KeyConverters.ToStateKey(signerAddress); long nonce = Chain.GetNextTxNonce(signerAddress); Transaction tx = diff --git a/Libplanet.Tests/KeyStore/ProtectedPrivateKeyTest.cs b/Libplanet.Tests/KeyStore/ProtectedPrivateKeyTest.cs index 5c0f23c8fe..dcd33553d0 100644 --- a/Libplanet.Tests/KeyStore/ProtectedPrivateKeyTest.cs +++ b/Libplanet.Tests/KeyStore/ProtectedPrivateKeyTest.cs @@ -106,8 +106,8 @@ public class ProtectedPrivateKeyTest public void Unprotect() { Assert.Equal(AddressFixture, Fixture.Address); - Assert.Equal(AddressFixture, Fixture.Unprotect(PassphraseFixture).ToAddress()); - Assert.Equal(AddressFixture2, Fixture2.Unprotect(PassphraseFixture).ToAddress()); + Assert.Equal(AddressFixture, Fixture.Unprotect(PassphraseFixture).Address); + Assert.Equal(AddressFixture2, Fixture2.Unprotect(PassphraseFixture).Address); var incorrectPassphraseException = Assert.Throws( () => Fixture.Unprotect("wrong passphrase") ); @@ -813,7 +813,7 @@ public void WriteJson() // TODO: More decent tests should be written. ProtectedPrivateKey key = ProtectedPrivateKey.FromJson(json); Assert.Equal(AddressFixture, key.Address); - Assert.Equal(AddressFixture, key.Unprotect(PassphraseFixture).ToAddress()); + Assert.Equal(AddressFixture, key.Unprotect(PassphraseFixture).Address); using (var stream = new MemoryStream()) { @@ -823,7 +823,7 @@ public void WriteJson() ProtectedPrivateKey key2 = ProtectedPrivateKey.FromJson(json); Assert.Equal(AddressFixture2, key2.Address); - Assert.Equal(AddressFixture2, key2.Unprotect(PassphraseFixture).ToAddress()); + Assert.Equal(AddressFixture2, key2.Unprotect(PassphraseFixture).Address); } } } diff --git a/Libplanet.Tests/Store/DataModelTest.cs b/Libplanet.Tests/Store/DataModelTest.cs index 0e9945a274..9d40a6e6af 100644 --- a/Libplanet.Tests/Store/DataModelTest.cs +++ b/Libplanet.Tests/Store/DataModelTest.cs @@ -283,7 +283,7 @@ public void DecodeFromBadIValues() random.NextBytes(buffer); ImmutableArray randBytes = buffer.ToImmutableArray(); Guid randGuid = Guid.NewGuid(); - Address randAddress = new PrivateKey().ToAddress(); + Address randAddress = new PrivateKey().Address; BTypes.Dictionary encoded; @@ -409,7 +409,7 @@ public void DecodeToBadTypes() random.NextBytes(buffer); ImmutableArray randBytes = buffer.ToImmutableArray(); Guid randGuid = Guid.NewGuid(); - Address randAddress = new PrivateKey().ToAddress(); + Address randAddress = new PrivateKey().Address; BTypes.Dictionary encoded; @@ -465,7 +465,7 @@ public RootModel() random.NextBytes(buffer); Bytes = buffer.ToImmutableArray(); Guid = Guid.NewGuid(); - Addr = new PrivateKey().ToAddress(); + Addr = new PrivateKey().Address; Str = Guid.NewGuid().ToString(); ListEmpty = ImmutableList.Empty; @@ -495,7 +495,7 @@ public RootModel() .ToImmutableList(); ListAddr = Enumerable .Range(0, 2) - .Select(_ => new PrivateKey().ToAddress()) + .Select(_ => new PrivateKey().Address) .ToImmutableList(); ListStr = Enumerable .Range(0, 2) @@ -537,7 +537,7 @@ public RootModel() .Range(0, 2) .Select(_ => new KeyValuePair, Address>( Guid.NewGuid().ToByteArray().ToImmutableArray(), - new PrivateKey().ToAddress())) + new PrivateKey().Address)) .ToImmutableDictionary(); DictBytesStr = Enumerable .Range(0, 2) @@ -554,7 +554,7 @@ public RootModel() DictAddrStr = Enumerable .Range(0, 2) .Select(_ => new KeyValuePair( - new PrivateKey().ToAddress(), + new PrivateKey().Address, Guid.NewGuid().ToString())) .ToImmutableDictionary(); DictStrStr = Enumerable diff --git a/Libplanet.Tests/Store/Trie/TrieTest.cs b/Libplanet.Tests/Store/Trie/TrieTest.cs index 1541b583e6..7c2ec961d0 100644 --- a/Libplanet.Tests/Store/Trie/TrieTest.cs +++ b/Libplanet.Tests/Store/Trie/TrieTest.cs @@ -25,7 +25,7 @@ public void GetAndSet(int addressCount) var addresses = Enumerable .Range(0, addressCount) - .Select(_ => new PrivateKey().ToAddress()) + .Select(_ => new PrivateKey().Address) .ToImmutableArray(); var states = new Dictionary(); @@ -64,7 +64,7 @@ public void Commit(int addressCount) var states = new IValue[addressCount]; for (int i = 0; i < addressCount; ++i) { - addresses[i] = new PrivateKey().ToAddress(); + addresses[i] = new PrivateKey().Address; states[i] = (Binary)TestUtils.GetRandomBytes(128); trieA = trieA.Set(new KeyBytes(addresses[i].ByteArray), states[i]); diff --git a/Libplanet.Tests/TestUtils.cs b/Libplanet.Tests/TestUtils.cs index 3c03fc7e68..aa2df874de 100644 --- a/Libplanet.Tests/TestUtils.cs +++ b/Libplanet.Tests/TestUtils.cs @@ -438,7 +438,7 @@ public static PreEvaluationBlock ProposeGenesis( index: 0, timestamp: timestamp ?? new DateTimeOffset(2018, 11, 29, 0, 0, 0, TimeSpan.Zero), - miner: (proposer ?? GenesisProposer.PublicKey).ToAddress(), + miner: (proposer ?? GenesisProposer.PublicKey).Address, publicKey: protocolVersion >= 2 ? proposer ?? GenesisProposer.PublicKey : null, previousHash: null, txHash: BlockContent.DeriveTxHash(txs), @@ -494,7 +494,7 @@ public static PreEvaluationBlock ProposeNext( index: previousBlock.Index + 1, timestamp: previousBlock.Timestamp.Add( blockInterval ?? TimeSpan.FromSeconds(15)), - miner: miner?.ToAddress() ?? previousBlock.Miner, + miner: miner?.Address ?? previousBlock.Miner, publicKey: protocolVersion >= 2 ? miner ?? previousBlock.PublicKey : null, previousHash: previousBlock.Hash, txHash: BlockContent.DeriveTxHash(txs), diff --git a/Libplanet.Tests/Tx/TransactionTest.cs b/Libplanet.Tests/Tx/TransactionTest.cs index ef937792dd..de78f080ad 100644 --- a/Libplanet.Tests/Tx/TransactionTest.cs +++ b/Libplanet.Tests/Tx/TransactionTest.cs @@ -81,7 +81,7 @@ public void CreateWithSystemAction() timestamp: timestamp ); - AssertBytesEqual(privateKey.ToAddress(), tx.Signer); + AssertBytesEqual(privateKey.Address, tx.Signer); Assert.Empty(tx.UpdatedAddresses); Assert.Equal(privateKey.PublicKey, tx.PublicKey); Assert.Equal(timestamp, tx.Timestamp); @@ -183,7 +183,7 @@ public void CreateWithDefaultUpdatedAddresses() ); Assert.Empty(emptyTx.UpdatedAddresses); - Address updatedAddr = new PrivateKey().ToAddress(); + Address updatedAddr = new PrivateKey().Address; var txWithAddr = Transaction.Create( 0, _fx.PrivateKey1, diff --git a/Libplanet.Tests/Tx/TxFixture.cs b/Libplanet.Tests/Tx/TxFixture.cs index c91f18f529..bf4f710b1e 100644 --- a/Libplanet.Tests/Tx/TxFixture.cs +++ b/Libplanet.Tests/Tx/TxFixture.cs @@ -112,15 +112,15 @@ public TxFixture(BlockHash? genesisHash) public PublicKey PublicKey5 => PrivateKey5.PublicKey; - public Address Address1 => PublicKey1.ToAddress(); + public Address Address1 => PublicKey1.Address; - public Address Address2 => PublicKey2.ToAddress(); + public Address Address2 => PublicKey2.Address; - public Address Address3 => PublicKey3.ToAddress(); + public Address Address3 => PublicKey3.Address; - public Address Address4 => PublicKey4.ToAddress(); + public Address Address4 => PublicKey4.Address; - public Address Address5 => PublicKey5.ToAddress(); + public Address Address5 => PublicKey5.Address; public Transaction Tx { get; } diff --git a/Libplanet.Tests/Tx/TxInvoiceTest.cs b/Libplanet.Tests/Tx/TxInvoiceTest.cs index bd7becda9a..4aa6697f55 100644 --- a/Libplanet.Tests/Tx/TxInvoiceTest.cs +++ b/Libplanet.Tests/Tx/TxInvoiceTest.cs @@ -138,7 +138,7 @@ public void Equality() Currency.Uncapped( "FOO", 18, - new PrivateKey().ToAddress()), + new PrivateKey().Address), 100), i == 5 ? (long?)null : 10); Assert.False(invoice1.Equals(invoice)); diff --git a/Libplanet.Tests/Tx/TxMetadataTest.cs b/Libplanet.Tests/Tx/TxMetadataTest.cs index 5845d78e5b..658150296b 100644 --- a/Libplanet.Tests/Tx/TxMetadataTest.cs +++ b/Libplanet.Tests/Tx/TxMetadataTest.cs @@ -48,7 +48,7 @@ public void Constructor() var meta = new TxMetadata(_key1.PublicKey); DateTimeOffset after = DateTimeOffset.UtcNow; Assert.Equal(0L, meta.Nonce); - AssertBytesEqual(_key1.ToAddress(), meta.Signer); + AssertBytesEqual(_key1.Address, meta.Signer); Assert.Empty(meta.UpdatedAddresses); Assert.InRange(meta.Timestamp, before, after); Assert.Equal(_key1.PublicKey, meta.PublicKey); @@ -78,8 +78,8 @@ public void CopyConstructor() Nonce = 0L, UpdatedAddresses = new[] { - _key1.ToAddress(), - _key2.ToAddress(), + _key1.Address, + _key2.Address, }.ToImmutableHashSet(), Timestamp = new DateTimeOffset(2022, 1, 12, 4, 56, 7, 890, default), GenesisHash = BlockHash.FromString( @@ -99,13 +99,13 @@ public void Deserialize() { Bencodex.Types.Dictionary dict1 = Dictionary.Empty .Add(new byte[] { 0x6e }, 123L) - .Add(new byte[] { 0x73 }, _key1.ToAddress().Bencoded) + .Add(new byte[] { 0x73 }, _key1.Address.Bencoded) .Add(new byte[] { 0x75 }, new List()) .Add(new byte[] { 0x74 }, "2022-05-23T10:02:00.000000Z") .Add(new byte[] { 0x70 }, _key1.PublicKey.ToImmutableArray(compress: false)); var meta1 = new TxMetadata(dict1); Assert.Equal(123L, meta1.Nonce); - AssertBytesEqual(_key1.ToAddress(), meta1.Signer); + AssertBytesEqual(_key1.Address, meta1.Signer); Assert.Empty(meta1.UpdatedAddresses); Assert.Equal( new DateTimeOffset(2022, 5, 23, 10, 2, 0, default), @@ -115,12 +115,12 @@ public void Deserialize() Bencodex.Types.Dictionary dict2 = Dictionary.Empty .Add(new byte[] { 0x6e }, 0L) - .Add(new byte[] { 0x73 }, _key2.ToAddress().Bencoded) + .Add(new byte[] { 0x73 }, _key2.Address.Bencoded) .Add( new byte[] { 0x75 }, Bencodex.Types.List.Empty - .Add(_key1.ToAddress().Bencoded) - .Add(_key2.ToAddress().Bencoded)) + .Add(_key1.Address.Bencoded) + .Add(_key2.Address.Bencoded)) .Add(new byte[] { 0x74 }, "2022-01-12T04:56:07.890000Z") .Add(new byte[] { 0x70 }, _key2.PublicKey.ToImmutableArray(compress: false)) .Add( @@ -129,9 +129,9 @@ public void Deserialize() "83915317ebdbf870c567b263dd2e61ec9dca7fb381c592d80993291b6ffe5ad5")); var meta2 = new TxMetadata(dict2); Assert.Equal(0L, meta2.Nonce); - AssertBytesEqual(_key2.ToAddress(), meta2.Signer); + AssertBytesEqual(_key2.Address, meta2.Signer); Assert.Equal( - new[] { _key1.ToAddress(), _key2.ToAddress() }.ToImmutableHashSet(), + new[] { _key1.Address, _key2.Address }.ToImmutableHashSet(), meta2.UpdatedAddresses); Assert.Equal( new DateTimeOffset(2022, 1, 12, 4, 56, 7, 890, default), @@ -155,7 +155,7 @@ public void ToBencodex(DateTimeOffset timestamp) }; Bencodex.Types.Dictionary expected1 = Dictionary.Empty .Add(new byte[] { 0x6e }, 123L) - .Add(new byte[] { 0x73 }, _key1.ToAddress().Bencoded) + .Add(new byte[] { 0x73 }, _key1.Address.Bencoded) .Add(new byte[] { 0x75 }, new List()) .Add(new byte[] { 0x74 }, "2022-05-23T10:02:00.000000Z") .Add(new byte[] { 0x70 }, _key1.PublicKey.ToImmutableArray(compress: false)); @@ -168,8 +168,8 @@ public void ToBencodex(DateTimeOffset timestamp) Nonce = 0L, UpdatedAddresses = new[] { - _key1.ToAddress(), - _key2.ToAddress(), + _key1.Address, + _key2.Address, }.ToImmutableHashSet(), Timestamp = new DateTimeOffset(2022, 1, 12, 4, 56, 7, 890, default), GenesisHash = BlockHash.FromString( @@ -177,12 +177,12 @@ public void ToBencodex(DateTimeOffset timestamp) }; Bencodex.Types.Dictionary expected2 = Dictionary.Empty .Add(new byte[] { 0x6e }, 0L) - .Add(new byte[] { 0x73 }, _key2.ToAddress().Bencoded) + .Add(new byte[] { 0x73 }, _key2.Address.Bencoded) .Add( new byte[] { 0x75 }, Bencodex.Types.List.Empty - .Add(_key1.ToAddress().Bencoded) - .Add(_key2.ToAddress().Bencoded)) + .Add(_key1.Address.Bencoded) + .Add(_key2.Address.Bencoded)) .Add(new byte[] { 0x74 }, "2022-01-12T04:56:07.890000Z") .Add(new byte[] { 0x70 }, _key2.PublicKey.ToImmutableArray(compress: false)) .Add( @@ -200,7 +200,7 @@ private class MetadataTransaction : ITransaction public long Nonce { get; set; } = 0L; - public Address Signer => PublicKey.ToAddress(); + public Address Signer => PublicKey.Address; public IImmutableSet
UpdatedAddresses { get; set; } = ImmutableHashSet
.Empty; diff --git a/Libplanet.Tests/Tx/TxSigningMetadataTest.cs b/Libplanet.Tests/Tx/TxSigningMetadataTest.cs index c835065953..91938861a8 100644 --- a/Libplanet.Tests/Tx/TxSigningMetadataTest.cs +++ b/Libplanet.Tests/Tx/TxSigningMetadataTest.cs @@ -16,7 +16,7 @@ public class TxSigningMetadataTest public void Constructor() { var metadata = new TxSigningMetadata(PublicKey, 123L); - Assert.Equal(PublicKey.ToAddress(), metadata.Signer); + Assert.Equal(PublicKey.Address, metadata.Signer); Assert.Equal(PublicKey, metadata.PublicKey); Assert.Equal(123L, metadata.Nonce); @@ -29,12 +29,12 @@ public void CopyConstructor() { var metadata = new TxSigningMetadata(PublicKey, 123L); var copy = new TxSigningMetadata(metadata); - Assert.Equal(PublicKey.ToAddress(), copy.Signer); + Assert.Equal(PublicKey.Address, copy.Signer); Assert.Equal(PublicKey, copy.PublicKey); Assert.Equal(123L, copy.Nonce); var copyFromInterface = new TxSigningMetadata(new MockingTxSigningMetadata()); - Assert.Equal(PublicKey.ToAddress(), copyFromInterface.Signer); + Assert.Equal(PublicKey.Address, copyFromInterface.Signer); Assert.Equal(PublicKey, copyFromInterface.PublicKey); Assert.Equal(123L, copyFromInterface.Nonce); } @@ -90,7 +90,7 @@ private class MockingTxSigningMetadata : ITxSigningMetadata { long ITxSigningMetadata.Nonce => 123L; - Address ITxSigningMetadata.Signer => PublicKey.ToAddress(); + Address ITxSigningMetadata.Signer => PublicKey.Address; PublicKey ITxSigningMetadata.PublicKey => PublicKey; diff --git a/Libplanet.Types/Assets/Currency.cs b/Libplanet.Types/Assets/Currency.cs index 8707437e5e..6ce48a52c3 100644 --- a/Libplanet.Types/Assets/Currency.cs +++ b/Libplanet.Types/Assets/Currency.cs @@ -28,7 +28,7 @@ namespace Libplanet.Types.Assets /// Here is how US Dollar can be represented using : /// /// var USMint = new PrivateKey(); - /// var USD = Currency.Uncapped(ticker: "USD", decimalPlaces: 2, minter: USMint.ToAddress()); + /// var USD = Currency.Uncapped(ticker: "USD", decimalPlaces: 2, minter: USMint.Address); /// var twentyThreeBucks = 23 * USD; /// // Or alternatively: USD * 23; /// // Or explicitly: new FungibleAssetValue(USD, 23, 0) diff --git a/Libplanet.Types/Blocks/BlockMarshaler.cs b/Libplanet.Types/Blocks/BlockMarshaler.cs index d396ffd4b6..0700187e4c 100644 --- a/Libplanet.Types/Blocks/BlockMarshaler.cs +++ b/Libplanet.Types/Blocks/BlockMarshaler.cs @@ -182,7 +182,7 @@ public static BlockMetadata UnmarshalBlockMetadata(Dictionary marshaled) if (marshaled.ContainsKey(PublicKeyKey)) { publicKey = new PublicKey(((Binary)marshaled[PublicKeyKey]).ByteArray); - miner = publicKey.ToAddress(); + miner = publicKey.Address; } else { diff --git a/Libplanet.Types/Blocks/BlockMetadata.cs b/Libplanet.Types/Blocks/BlockMetadata.cs index 76ff5a668b..fc2c5f1209 100644 --- a/Libplanet.Types/Blocks/BlockMetadata.cs +++ b/Libplanet.Types/Blocks/BlockMetadata.cs @@ -90,7 +90,7 @@ public BlockMetadata( protocolVersion: CurrentProtocolVersion, index: index, timestamp: timestamp, - miner: publicKey.ToAddress(), + miner: publicKey.Address, publicKey: publicKey, previousHash: previousHash, txHash: txHash, @@ -180,7 +180,7 @@ public BlockMetadata( $"Argument {nameof(publicKey)} cannot be null for " + $"{nameof(protocolVersion)} >= 2.", publicKey); - Miner = miner == p.ToAddress() + Miner = miner == p.Address ? miner : throw new InvalidBlockPublicKeyException( $"Argument {nameof(miner)} should match the derived address of " + diff --git a/Libplanet.Types/Consensus/Validator.cs b/Libplanet.Types/Consensus/Validator.cs index 50748c579d..539e7b13e0 100644 --- a/Libplanet.Types/Consensus/Validator.cs +++ b/Libplanet.Types/Consensus/Validator.cs @@ -72,7 +72,7 @@ private Validator(Bencodex.Types.Dictionary bencoded) /// An of the validator operator's . /// [JsonIgnore] - public Address OperatorAddress => PublicKey.ToAddress(); + public Address OperatorAddress => PublicKey.Address; /// [JsonIgnore] diff --git a/Libplanet/Blockchain/BlockChain.ProposeBlock.cs b/Libplanet/Blockchain/BlockChain.ProposeBlock.cs index 8cd118aacb..cc1a6d1a7f 100644 --- a/Libplanet/Blockchain/BlockChain.ProposeBlock.cs +++ b/Libplanet/Blockchain/BlockChain.ProposeBlock.cs @@ -156,7 +156,7 @@ internal Block ProposeBlock( protocolVersion: BlockMetadata.CurrentProtocolVersion, index: index, timestamp: DateTimeOffset.UtcNow, - miner: proposer.ToAddress(), + miner: proposer.Address, publicKey: proposer.PublicKey, previousHash: prevHash, txHash: BlockContent.DeriveTxHash(orderedTransactions), diff --git a/Libplanet/Blockchain/BlockChain.cs b/Libplanet/Blockchain/BlockChain.cs index 1989564468..94d1d20bb9 100644 --- a/Libplanet/Blockchain/BlockChain.cs +++ b/Libplanet/Blockchain/BlockChain.cs @@ -690,7 +690,7 @@ public Transaction MakeTransaction( { // FIXME: Exception should be documented when the genesis block does not exist. Transaction tx = Transaction.Create( - GetNextTxNonce(privateKey.ToAddress()), + GetNextTxNonce(privateKey.Address), privateKey, Genesis.Hash, actions.Select(x => x.PlainValue), diff --git a/Libplanet/KeyStore/ProtectedPrivateKey.cs b/Libplanet/KeyStore/ProtectedPrivateKey.cs index 3d72222546..d0d2a3ae23 100644 --- a/Libplanet/KeyStore/ProtectedPrivateKey.cs +++ b/Libplanet/KeyStore/ProtectedPrivateKey.cs @@ -118,7 +118,7 @@ public static ProtectedPrivateKey Protect(PrivateKey privateKey, string passphra var cipher = new Aes128Ctr(iv); ImmutableArray ciphertext = cipher.Encrypt(encKey, privateKey.ByteArray); ImmutableArray mac = CalculateMac(derivedKey, ciphertext); - Address address = privateKey.ToAddress(); + Address address = privateKey.Address; return new ProtectedPrivateKey(address, kdf, mac, cipher, ciphertext); } @@ -326,7 +326,7 @@ public PrivateKey Unprotect(string passphrase) unverifiedKey: plaintext.ToBuilder().ToArray(), informedConsent: true ); - Address actualAddress = key.ToAddress(); + Address actualAddress = key.Address; if (!Address.Equals(actualAddress)) { throw new MismatchedAddressException(