Writing a smart contract in C++
Sample contract functionality
Sample code
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
// Copied from C version
static int envAtoi(const char* env) {
const char* val = getenv(env);
if (val == NULL) {
return 0;
}
return atoi(val);
}
int main(int argc, char *argv[]) {
// THIS SAMPLE ONLY SUPPORTS THE "register" FUNCTION
if (argc == 3 && strcmp(argv[1], "register") == 0) {
// GET THE CURRENT USER'S NAME
const char *previousName = getenv("DB_USER_CURRENT");
// OR DEFAULT TO "unknown" IF THIS IS THE FIRST CALL
if (previousName == NULL || strlen(previousName) == 0) {
previousName = "unknown";
}
// GET THE TOTAL USER COUNT
int totalUserCount = envAtoi("DB_TOTALUSERS");
// WRITE PREVIOUS USER NAME TO STDOUT
cout << "OUT=prevname: " << previousName << endl;
// UPDATE CURRENT USER NAME BY WRITING IT TO DB
cout << "DBW=USER_CURRENT=" << argv[2] << endl;
// STORE USER NAME UNDER A STORAGE SLOT FOR PERSISTENCE (CURRENT GETS OVERWRITTEN ON EACH CALL)
cout << "DBW=USER_" << totalUserCount << "=" << argv[2] << endl;
// INCREMENT THE TOTAL USER COUNT
cout << "DBW=TOTALUSERS=" << totalUserCount+1 << endl;
return 0;
}
if (argc >= 2) {
cerr << "Wrong CMD: " << argv[1] << endl;
exit(1);
}
cerr << "Wrong args!" << endl;
exit(1);
}Save the contract
Compiling a smart contract in C++Last updated