Skip to content

Commit

Permalink
lint
Browse files Browse the repository at this point in the history
  • Loading branch information
dkackman committed Mar 23, 2024
1 parent 28e8580 commit adf521a
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 105 deletions.
2 changes: 0 additions & 2 deletions src/wallet.tests/StandardWalletTests.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using chia.dotnet;
using chia.dotnet.clvm;
using chia.dotnet.wallet;
using System.Numerics;
using Xunit.Sdk;

namespace wallet.tests;

Expand Down
34 changes: 15 additions & 19 deletions src/wallet/AssetWallet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,37 +6,32 @@ namespace chia.dotnet.wallet;
/// <summary>
/// Represents an asset wallet that manages asset tokens.
/// </summary>
public class AssetWallet : Wallet<AssetToken<StandardTransaction>>
{
/// <summary>
/// Initializes a new instance of the <see cref="AssetWallet"/> class.
/// </summary>
/// <param name="node">The full node proxy.</param>
/// <param name="keyStore">The key store.</param>
/// <param name="assetId">The asset ID.</param>
/// <param name="hiddenPuzzleHash">The hidden puzzle hash.</param>
/// <param name="walletOptions">The wallet options.</param>
public AssetWallet(
/// <remarks>
/// Initializes a new instance of the <see cref="AssetWallet"/> class.
/// </remarks>
/// <param name="node">The full node proxy.</param>
/// <param name="keyStore">The key store.</param>
/// <param name="assetId">The asset ID.</param>
/// <param name="hiddenPuzzleHash">The hidden puzzle hash.</param>
/// <param name="walletOptions">The wallet options.</param>
public class AssetWallet(
FullNodeProxy node,
KeyStore keyStore,
byte[] assetId,
byte[]? hiddenPuzzleHash = null,
WalletOptions? walletOptions = null
) : base(node, keyStore, walletOptions)
{
AssetId = assetId;
HiddenPuzzleHash = hiddenPuzzleHash ?? Puzzles.GetPuzzle("defaultHidden").Hash();
}
) : Wallet<AssetToken<StandardTransaction>>(node, keyStore, walletOptions)
{

/// <summary>
/// Gets the asset ID.
/// </summary>
public byte[] AssetId { get; init; }
public byte[] AssetId { get; init; } = assetId;

/// <summary>
/// Gets the hidden puzzle hash.
/// </summary>
public byte[] HiddenPuzzleHash { get; init; }
public byte[] HiddenPuzzleHash { get; init; } = hiddenPuzzleHash ?? Puzzles.GetPuzzle("defaultHidden").Hash();

private Program? Tail { get; set; } = null;

Expand Down Expand Up @@ -130,7 +125,8 @@ public async Task<CoinSpend> GetParentCoinSpend(CoinRecord coinRecord, Cancellat

var result = uncurriedEvePuzzle.Item2.ToList()[2].Run(Program.Nil).Value;

if (result.IsAtom) throw new Exception("Asset spend output is atom.");
if (result.IsAtom)
throw new Exception("Asset spend output is atom.");

var conditions = result.ToList();

Expand Down
13 changes: 8 additions & 5 deletions src/wallet/Puzzles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,19 @@ internal static class Puzzles

private static Program Puzzle(string name, string? folder = null)
{
var assemblyLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new InvalidOperationException();
var filePath = Path.Combine(assemblyLocation, "puzzles");
var assembly = Assembly.GetExecutingAssembly();
var resourcePath = "wallet.puzzles";
if (folder != null)
{
filePath = Path.Combine(filePath, folder);
resourcePath = Path.Combine(resourcePath, folder);
}

filePath = Path.Combine(filePath, $"{name}.clvm.hex");
resourcePath = Path.Combine(resourcePath, $"{name}.clvm.hex");
resourcePath = resourcePath.Replace(Path.DirectorySeparatorChar, '.');

var fileContent = File.ReadAllText(filePath).Trim();
using Stream stream = assembly.GetManifestResourceStream(resourcePath) ?? throw new InvalidOperationException($"Could not find resource: {resourcePath}");
using StreamReader reader = new(stream);
var fileContent = reader.ReadToEnd().Trim();

return Program.DeserializeHex(fileContent);
}
Expand Down
17 changes: 7 additions & 10 deletions src/wallet/StandardTransaction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@ namespace chia.dotnet.wallet
/// <summary>
/// Represents a standard transaction in the Chia.NET wallet.
/// </summary>
public class StandardTransaction : Program
/// <remarks>
/// Initializes a new instance of the <see cref="StandardTransaction"/> class with the specified synthetic public key.
/// </remarks>
/// <param name="syntheticPublicKey">The synthetic public key to use.</param>
public class StandardTransaction(JacobianPoint syntheticPublicKey)
: Program(Puzzles.GetPuzzle("payToDelegatedOrHidden").Curry([FromJacobianPoint(syntheticPublicKey)]).Value)
{
/// <summary>
/// Initializes a new instance of the <see cref="StandardTransaction"/> class with the specified synthetic public key.
/// </summary>
/// <param name="syntheticPublicKey">The synthetic public key to use.</param>
public StandardTransaction(JacobianPoint syntheticPublicKey) : base(Puzzles.GetPuzzle("payToDelegatedOrHidden").Curry([FromJacobianPoint(syntheticPublicKey)]).Value)
{
SyntheticPublicKey = syntheticPublicKey;
}

/// <summary>
/// Gets or sets the synthetic public key associated with the transaction.
/// </summary>
public JacobianPoint SyntheticPublicKey { get; init; }
public JacobianPoint SyntheticPublicKey { get; init; } = syntheticPublicKey;

/// <summary>
/// Gets the solution program for the specified conditions.
Expand Down
6 changes: 3 additions & 3 deletions src/wallet/StandardWallet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class StandardWallet(
/// <param name="amount">The amount to send as a fee.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>A list of coin spends.</returns>
public async Task<List<CoinSpend>> SendFee(long amount, CancellationToken cancellationToken = default)
public async Task<IEnumerable<CoinSpend>> SendFee(long amount, CancellationToken cancellationToken = default)
{
var coinRecords = SelectCoinRecords(amount, CoinSelection.Oldest);

Expand Down Expand Up @@ -67,7 +67,7 @@ public async Task<List<CoinSpend>> SendFee(long amount, CancellationToken cancel
/// <param name="fee">The fee amount.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>A list of coin spends.</returns>
public async Task<List<CoinSpend>> Send(byte[] puzzleHash, long amount, long fee, CancellationToken cancellationToken = default)
public async Task<IEnumerable<CoinSpend>> Send(byte[] puzzleHash, long amount, long fee, CancellationToken cancellationToken = default)
{
var totalAmount = amount + fee;

Expand Down Expand Up @@ -100,7 +100,7 @@ public async Task<List<CoinSpend>> Send(byte[] puzzleHash, long amount, long fee
}
return puzzle.Spend(record.Coin, StandardTransaction.GetSolution(conditions));
}).ToList();
});

return coinSpends;
}
Expand Down
129 changes: 63 additions & 66 deletions src/wallet/wallet.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
<RepositoryUrl>https://github.com/dkackman/chia-dotnet-wallet</RepositoryUrl>
<PackageTags>chia; xch; wallet</PackageTags>
<AssemblyName>chia-dotnet-wallet</AssemblyName>
<AssemblyVersion>0.1.2.0</AssemblyVersion>
<FileVersion>0.1.2.0</FileVersion>
<AssemblyVersion>0.1.5.0</AssemblyVersion>
<FileVersion>0.1.5.0</FileVersion>
<PackageProjectUrl>https://dkackman.github.io/chia-dotnet-wallet/</PackageProjectUrl>
<Authors>dkackman</Authors>
<PackageReadmeFile>README.md</PackageReadmeFile>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Version>0.1.3</Version>
<Version>0.1.5</Version>
<PackageReleaseNotes>First release</PackageReleaseNotes>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<IncludeSymbols>True</IncludeSymbols>
Expand Down Expand Up @@ -51,76 +51,73 @@
</ItemGroup>

<ItemGroup>
<Content Include="KeyPair.cs">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\cat.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\cat.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\default_hidden.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\default_hidden.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\pay_to_conditions.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\pay_to_conditions.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\pay_to_delegated_or_hidden.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\pay_to_delegated_or_hidden.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\synthetic_public_key.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\synthetic_public_key.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<EmbeddedResource Include="puzzles\cat.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\cat.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\default_hidden.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\default_hidden.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\pay_to_conditions.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\pay_to_conditions.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\pay_to_delegated_or_hidden.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\pay_to_delegated_or_hidden.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\synthetic_public_key.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\synthetic_public_key.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>

<ItemGroup>
<Content Include="..\..\chia-leaf-logo-384x384.png">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</Content>
<Content Include="puzzles\tails\delegated.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\delegated.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\everything_with_signature.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\everything_with_signature.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\genesis_by_coin_id.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\genesis_by_coin_id.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\indexed_with_signature.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\indexed_with_signature.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\meltable_genesis_by_coin_id.clsp">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="puzzles\tails\meltable_genesis_by_coin_id.clvm.hex">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<EmbeddedResource Include="puzzles\tails\delegated.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\delegated.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\everything_with_signature.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\everything_with_signature.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\genesis_by_coin_id.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\genesis_by_coin_id.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\indexed_with_signature.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\indexed_with_signature.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\meltable_genesis_by_coin_id.clsp">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="puzzles\tails\meltable_genesis_by_coin_id.clvm.hex">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource>
<None Include="..\..\LICENSE">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
Expand Down

0 comments on commit adf521a

Please sign in to comment.