Writing a smart contract in JavaScript (JS)
Sample contract functionality
Sample code
function main(args) {
// THIS SAMPLE ONLY SUPPORTS THE "register" FUNCTION
if (args && args.length === 2 && args[0] === "register") {
// GET THE CURRENT USER'S NAME OR DEFAULT TO "unknown" IF THIS IS THE FIRST CALL
const previous_name = process.env.DB_USER_CURRENT || "unknown";
// GET THE TOTAL USER COUNT
const total_user_count = parseInt(process.env.DB_TOTALUSERS || "0");
// WRITE PREVIOUS USER NAME TO STDOUT
process.stdout.write("OUT=prevname: " + previous_name);
process.stdout.write("\n");
// UPDATE CURRENT USER NAME BY WRITING IT TO DB
process.stdout.write("DBW=USER_CURRENT=" + args[1]);
process.stdout.write("\n");
// STORE USER NAME UNDER A STORAGE SLOT FOR PERSISTENCE (CURRENT GETS OVERWRITTEN ON EACH CALL)
process.stdout.write("DBW=USER_" + total_user_count + "=" + args[1]);
process.stdout.write("\n");
// INCREMENT THE TOTAL USER COUNT
process.stdout.write("DBW=TOTALUSERS=" + (total_user_count + 1));
process.stdout.write("\n");
// EXECUTION SUCCESSFUL
process.exit(0);
}
// EXECUTION FAILED, WRONG COMMAND
if (args.length >= 1) {
process.stderr.write("Wrong CMD: " + args[0]);
process.stderr.write("\n");
process.exit(1);
}
// EXECUTION FAILED, WRONG ARGS
process.stderr.write("Wrong args!");
process.stderr.write("\n");
process.exit(1);
}
main(process.argv.slice(2));Save the contract
Last updated