Writing a smart contract in C# (C-Sharp)
Sample contract functionality
Sample code
using System;
public class Contract
{
private static String getEnv(String key, String deft) {
String? val = Environment.GetEnvironmentVariable(key);
if (val == null || val.Length == 0) {
return deft;
}
return val;
}
private static int atoi(String val) {
try
{
return Int32.Parse(val);
}
catch (FormatException)
{
return 0;
}
}
public static int Main(String[] args)
{
// THIS SAMPLE ONLY SUPPORTS THE "register" FUNCTION
if (args.Length == 2 && args[0] == "register") {
// GET THE CURRENT USER'S NAME OR DEFAULT TO "unknown" IF THIS IS THE FIRST CALL
String? previousName = getEnv("DB_USER_CURRENT", "unknown");
// GET THE TOTAL USER COUNT
int totalUserCount = atoi(getEnv("DB_TOTALUSERS", "0"));
// WRITE PREVIOUS USER NAME TO STDOUT
Console.Out.WriteLine($"OUT=prevname: {previousName}");
// UPDATE CURRENT USER NAME BY WRITING IT TO DB
Console.Out.WriteLine($"DBW=USER_CURRENT={args[1]}");
// STORE USER NAME UNDER A STORAGE SLOT FOR PERSISTENCE (CURRENT GETS OVERWRITTEN ON EACH CALL)
Console.Out.WriteLine($"DBW=USER_{totalUserCount}={args[1]}");
// INCREMENT THE TOTAL USER COUNT
Console.Out.WriteLine($"DBW=TOTALUSERS={totalUserCount+1}");
return 0;
}
if (args.Length >= 1) {
Console.Error.WriteLine("Wrong CMD: " + args[0]);
return 1;
}
Console.Error.WriteLine("Wrong args!");
return 1;
}
}Save the contract
Compiling a smart contract in C# (C-Sharp)Last updated