Skip to content

Commit

Permalink
Add support for ZIP: MoonBaZe-0001 aka BigInt (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
KingGorrin committed Aug 1, 2023
1 parent 89be6a8 commit 36795dd
Show file tree
Hide file tree
Showing 117 changed files with 14,559 additions and 14,370 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on:
push:
branches:
- main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
build:
Expand Down
78 changes: 44 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ dotnet add package Zenon.Sdk
```csharp
using Zenon;

var nodeUrl = new Uri("ws://nodes.zenon.place:35998");
var nodeUrl = new Uri("ws://my.hc1node.com:35998");

await Znn.Instance.Client.Value.StartAsync(nodeUrl);
var znnClient = Znn.Instance;

await znnClient.Client.Value.StartAsync(nodeUrl);
...
await Znn.Instance.Client.Value.StopAsync();
await znnClient.Client.Value.StopAsync();
```

### Generate wallet
Expand All @@ -35,10 +37,12 @@ using Zenon;
var wallet = "name";
var passphrase = "secret";

Znn.Instance.DefaultKeyStorePath =
Znn.Instance.KeyStoreManager.CreateNew(passphrase, wallet);
Znn.Instance.DefaultKeyStore =
Znn.Instance.KeyStoreManager.ReadKeyStore(passphrase, Znn.Instance.DefaultKeyStorePath);
var znnClient = Znn.Instance;

znnClient.DefaultKeyStorePath =
znnClient.KeyStoreManager.CreateNew(passphrase, wallet);
znnClient.DefaultKeyStore =
znnClient.KeyStoreManager.ReadKeyStore(passphrase, znnClient.DefaultKeyStorePath);
```

### Generate wallet from mnemonic
Expand All @@ -51,37 +55,41 @@ var passphrase = "secret";
var mnemonic =
"route become dream access impulse price inform obtain engage ski believe awful absent pig thing vibrant possible exotic flee pepper marble rural fire fancy";

Znn.Instance.DefaultKeyStorePath =
Znn.Instance.KeyStoreManager.CreateFromMnemonic(mnemonic, passphrase, wallet);
Znn.Instance.DefaultKeyStore =
Znn.Instance.KeyStoreManager.ReadKeyStore(passphrase, Znn.Instance.DefaultKeyStorePath);
var znnClient = Znn.Instance;

znnClient.DefaultKeyStorePath =
znnClient.KeyStoreManager.CreateFromMnemonic(mnemonic, passphrase, wallet);
znnClient.DefaultKeyStore =
znnClient.KeyStoreManager.ReadKeyStore(passphrase, znnClient.DefaultKeyStorePath);
```

### Sending a transaction

```csharp
using Zenon;

var nodeUrl = new Uri("ws://nodes.zenon.place:35998");
var nodeUrl = new Uri("ws://my.hc1node.com:35998");
var wallet = "name";
var passphrase = "secret";
var mnemonic =
"route become dream access impulse price inform obtain engage ski believe awful absent pig thing vibrant possible exotic flee pepper marble rural fire fancy";

Znn.Instance.DefaultKeyStorePath =
Znn.Instance.KeyStoreManager.CreateFromMnemonic(mnemonic, passphrase, wallet);
Znn.Instance.DefaultKeyStore =
Znn.Instance.KeyStoreManager.ReadKeyStore(passphrase, Znn.Instance.DefaultKeyStorePath);
Znn.Instance.DefaultKeyPair =
Znn.Instance.DefaultKeyStore.GetKeyPair(); // Use primary address
var znnClient = Znn.Instance;

await Znn.Instance.Client.Value.StartAsync(nodeUrl);
znnClient.DefaultKeyStorePath =
znnClient.KeyStoreManager.CreateFromMnemonic(mnemonic, passphrase, wallet);
znnClient.DefaultKeyStore =
znnClient.KeyStoreManager.ReadKeyStore(passphrase, znnClient.DefaultKeyStorePath);
znnClient.DefaultKeyPair =
await znnClient.DefaultKeyStore.GetSignerAsync(0); // Use primary address
var tx = Znn.Instance.Embedded.Pillar.CollectReward();
await znnClient.Client.Value.StartAsync(nodeUrl);

await Znn.Instance.Send(tx);
var tx = znnClient.Embedded.Pillar.CollectReward();

await Znn.Instance.Client.Value.StopAsync();
await znnClient.Send(tx);

await znnClient.Client.Value.StopAsync();
```

### Receive a transaction
Expand All @@ -90,35 +98,37 @@ await Znn.Instance.Client.Value.StopAsync();
using Zenon;
using Zenon.Model.NoM;

var nodeUrl = new Uri("ws://nodes.zenon.place:35998");
var nodeUrl = new Uri("ws://my.hc1node.place:35998");
var wallet = "name";
var passphrase = "secret";
var mnemonic =
"route become dream access impulse price inform obtain engage ski believe awful absent pig thing vibrant possible exotic flee pepper marble rural fire fancy";

Znn.Instance.DefaultKeyStorePath =
Znn.Instance.KeyStoreManager.CreateFromMnemonic(mnemonic, passphrase, wallet);
Znn.Instance.DefaultKeyStore =
Znn.Instance.KeyStoreManager.ReadKeyStore(passphrase, Znn.Instance.DefaultKeyStorePath);
Znn.Instance.DefaultKeyPair =
Znn.Instance.DefaultKeyStore.GetKeyPair(); // Use primary address
var znnClient = Znn.Instance;

znnClient.DefaultKeyStorePath =
znnClient.KeyStoreManager.CreateFromMnemonic(mnemonic, passphrase, wallet);
znnClient.DefaultKeyStore =
znnClient.KeyStoreManager.ReadKeyStore(passphrase, znnClient.DefaultKeyStorePath);
znnClient.DefaultKeyPair =
await znnClient.DefaultKeyStore.GetSignerAsync(0); // Use primary address
await Znn.Instance.Client.Value.StartAsync(nodeUrl);
await znnClient.Client.Value.StartAsync(nodeUrl);

var result = await Znn.Instance.Ledger
.GetUnreceivedBlocksByAddress(Znn.Instance.DefaultKeyPair.Address);
var result = await znnClient.Ledger
.GetUnreceivedBlocksByAddress(await znnClient.DefaultKeyPair.GetAddressAsync());

if (result.Count != 0)
{
foreach (var item in result.List)
{
var tx = AccountBlockTemplate.Receive(item.Hash);

await Znn.Instance.Send(tx);
await znnClient.Send(tx);
}
}

await Znn.Instance.Client.Value.StopAsync();
await znnClient.Client.Value.StopAsync();
```

## Contributing
Expand Down
37 changes: 33 additions & 4 deletions src/Zenon.Tests/Api/ApiTest.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using FluentAssertions;
using System;
using System.Numerics;
using System.Threading.Tasks;
using Xunit;
using Zenon.Api.Embedded;
Expand Down Expand Up @@ -545,6 +546,34 @@ public async Task ListResponseAsync(string toAddress, int pageIndex, int pageSiz
result.List.Should().NotBeEmpty();
}
}

public class GetFeeTokenPair
{
public GetFeeTokenPair()
{
this.MethodName = "embedded.bridge.getFeeTokenPair";
}

public string MethodName { get; }

[Theory]
[InlineData("zts1znnxxxxxxxxxxxxx9z4ulx", "Zenon.Resources.api.embedded.bridge.getFeeTokenPair.json")]
public async Task SingleResponseAsync(string tokenStandard, string resourceName)
{
// Setup
var zts = TokenStandard.Parse(tokenStandard);
var api = new BridgeApi(new Lazy<IClient>(() => new TestClient()
.WithMethod(this.MethodName, zts.ToString())
.WithManifestResourceTextResponse(resourceName)));

// Execute
var result = await api.GetFeeTokenPair(zts);

// Validate
result.Should().NotBeNull();
result.TokenStandard.Should().Be(zts);
}
}
}

public class Liquidity
Expand Down Expand Up @@ -1529,17 +1558,17 @@ public async Task ListResponseAsync(string address, int pageIndex, int pageSize,
public class GetPlasmaByQsr
{
[Theory]
[InlineData(100.21, 210441)]
public async Task SingleResponseAsync(double qsrAmount, long expectedResult)
[InlineData("10021000000", "21044100000000")]
public async Task SingleResponseAsync(string qsrAmount, string expectedResult)
{
// Setup
var api = new PlasmaApi(new Lazy<IClient>(() => new TestClient()));

// Execute
var result = await api.GetPlasmaByQsr(qsrAmount);
var result = await api.GetPlasmaByQsr(BigInteger.Parse(qsrAmount));

// Validate
result.Should().Be(expectedResult);
result.Should().Be(BigInteger.Parse(expectedResult));
}
}

Expand Down
Loading

0 comments on commit 36795dd

Please sign in to comment.