using System.Collections.Generic;
using System.Threading.Tasks;
using Netezos.Forging.Models;
public static async Task Main()
var rpc = new TezosRpc("https://rpc.tzkt.io/ghostnet/");
var key = Key.FromBase58("edsk35mfZXZJiYUxqcmsK5K6ggg3owD2dpbRgFHp4zZzmrPy9RBdj8");
await TransferFa2(rpc, key, "KT1DYk1XDzHredJq1EyNkDindiWDqZyekXGj");
public static async Task TransferFa12(TezosRpc rpc, Key key, string contract)
var head = await rpc.Blocks.Head.Hash.GetAsync<string>();
var counter = await rpc.Blocks.Head.Context.Contracts[key.PubKey.Address].Counter.GetAsync<int>();
var script = await rpc.Blocks.Head.Context.Contracts[contract].Script.GetAsync();
var code = Micheline.FromJson(script.code);
var cs = new ContractScript(code);
var param = cs.BuildParameter(
from = key.PubKey.Address,
var tx = new TransactionContent
Source = key.PubKey.Address,
Parameters = new Parameters
var opBytes = await new LocalForge().ForgeOperationAsync(head, tx);
var opSig = key.SignOperation(opBytes);
var opHash = await rpc.Inject.Operation.PostAsync(opBytes.Concat((byte[])opSig));
Console.WriteLine((string)opHash);
public static async Task TransferFa2(TezosRpc rpc, Key key, string contract)
var head = await rpc.Blocks.Head.Hash.GetAsync<string>();
var counter = await rpc.Blocks.Head.Context.Contracts[key.PubKey.Address].Counter.GetAsync<int>();
var script = await rpc.Blocks.Head.Context.Contracts[contract].Script.GetAsync();
var code = Micheline.FromJson(script.code);
var cs = new ContractScript(code);
var param = cs.BuildParameter(
from_ = key.PubKey.Address,
to_ = key.PubKey.Address,
var tx = new TransactionContent
Source = key.PubKey.Address,
Parameters = new Parameters
var opBytes = await new LocalForge().ForgeOperationAsync(head, tx);
var opSig = key.SignOperation(opBytes);
var opHash = await rpc.Inject.Operation.PostAsync(opBytes.Concat((byte[])opSig));
Console.WriteLine((string)opHash);