Hofmann seems to have finally resented attempts to break into the world of social networking, focusing on blockchain projects. The first timid attempt was a project Blitmap, from which a test area emerged for a wild experiment called Loot.
The Loot project hit the second wave of NFT fever and was a great success. When Hofmann finally caught the attention of the crypto-community, he could, with a sense of absurdity of himself, embark on even wilder testing of what the users of smart contracts would make.
Road through Loot to Wagmigotchi
On August 27, Hofmann announced via his Twitter unusual experiment. The programmer published a link to an ethereal smart contract, which allowed users to automatically generate eight thousand virtual backpacks for a non-existent blockchain game (the author left the creation of connected game projects entirely on the shoulders of the community), linked to the NFT token.
Each token referred to an image with a text listing of the eight items to be included in the backpacks. Users could then have an NFT token sent to their Ethernet wallet at the cost of a transaction fee (at the time the experiment was launched, the average gas fee was around $ 7 per transaction).
Although the backpacks had no practical use and their graphical representation was as minimalist as possible, they were (apparently under the vision of a valuable digital collector’s item in the future) dismantled in less than four hours and resold at OpenSea for about $ 46 million over the next five days. Over the past weekend, secondary sales of Loot tokens have exceeded the magical milestone of $ 200 million. The project has also sparked a massive wave of imitators and projects trying to gather Loot token owners and their followers.
It’s hard to say whether Loot tokens fulfilled Hofmann’s plan, or just became a manifestation of the extremes the current hysteria about NFT tokens can go. In any case, he managed to draw the attention of the cryptocurrency community and open the door for further projects. The second social experiment with a smart contract did not take long. Using a relatively simple smart contract, Hofmann created blockchain tamagotchi and Wagmigotchi, respectively.
Unlike Loot tokens, Wagmigotchi is not latently a way to get rich speculatively. You could rather say that the opposite is true, because in order to keep the blockchain Wagmigotchi happy and alive, you have to burn a relatively expensive gas and the only reward will be a good feeling, or feedback from a smart contract, which at the beginning did not even have a graphic representation. .
As Hofmann himself says to the second attempt to keep the contract active: “Friends, you really won’t benefit from this. It’s an experiment. Don’t do it unless you want to take care of your pet without getting something in return. ”
How 73 transactions settled the first Wagmigotchi
As Hofmann explained on his Twitter when launching the first version of the contract, interacting with the contract makes no claim to the virtual blockchain pet, and the only meaning of the whole interaction is the pleasure of fulfilling his needs, for which you receive feedback in the form of his (simulated) satisfaction.
The first attempt yielded conflicting results. Wagmigotchi’s number 1 died after 73 transactions. However, it was not about the lack of interest of users, but on the contrary about memorizing the contract with one type of interaction.
Described in the words of game logic, the virtual creator died of exhaustion after too many users played with it. “It was played too often in a short time and as a result it was exhausted,” commented Hofmann on the infamous end of the first Wagmigotchi. It could be said that it was a technical error and a misunderstanding of the mechanics of the game by the users who interacted with the contract.
The second generation
After light tuning of the contract code saw the light of day Wagmigotchi number 2 on September 10th. It still survives and happily swallows transaction fees, which the contract has already burned for tens of thousands of dollars.
The second generation of digital pet has been programmed more durable. Mere fatigue from playing for too long no longer kills him, now only the user’s lack of interest can do that, ie the lack of interaction with the smart contract and not meeting the pet’s needs. Wagmigotchi number two has four attributes that are updated every fiftieth block.
Attributes include boredom, dirt, hunger and drowsiness. If one of the parameters exceeds a fixed threshold, the blockchain maker “dies” and it is no longer possible to interact with the contract.
In addition to meeting the needs of the virtual artist, individual events sometimes result in an increase in dissatisfaction in another area. For example, feeding reduces hunger but increases boredom or dirt. Moreover, the needs are slowly but steadily growing. One interaction with the contract, ie fulfilling some of the needs of the virtual pet, costs the user 0.002 to 0.006 ETH, ie converted to Czech crowns for something between 128 and 430 CZK.
–
Because the original project is really just a plain smart contract without a graphical representation, a UX engineer created it Sam Mason of Caires (Senior Design Engineer at Cloudflare) A much more user-friendly web frontend that can be viewed at wagmigotchi.pet.
The whole contract looks like this:
contract Wagmipet {
address _owner;
bool _birthed;
event CaretakerLoved(address indexed caretaker, uint256 indexed amount);
uint256 lastFeedBlock;
uint256 lastCleanBlock;
uint256 lastPlayBlock;
uint256 lastSleepBlock;
uint8 internal hunger;
uint8 internal uncleanliness;
uint8 internal boredom;
uint8 internal sleepiness;
mapping (address => uint256) public love;
modifier onlyOwner() {
require(msg.sender == _owner);
_;
}
constructor() {
_owner = msg.sender;
lastFeedBlock = block.number;
lastCleanBlock = block.number;
lastPlayBlock = block.number;
lastSleepBlock = block.number;
hunger = 0;
uncleanliness = 0;
boredom = 0;
sleepiness = 0;
}
function addLove(address caretaker, uint256 amount) internal {
love[caretaker] += amount;
emit CaretakerLoved(caretaker, amount);
}
function feed() public {
require(getAlive(), "no longer with us");
require(getBoredom() < 80, "im too tired to eat");
require(getUncleanliness() < 80, "im feeling too gross to eat");
// require(getHunger() > 0, "i dont need to eat");
lastFeedBlock = block.number;
hunger = 0;
boredom += 10;
uncleanliness += 3;
addLove(msg.sender, 1);
}
function clean() public {
require(getAlive(), “no longer with us”);
require(getUncleanliness() > 0, “i dont need a bath”);
lastCleanBlock = block.number;
uncleanliness = 0;
addLove(msg.sender, 1);
}
function play() public {
require(getAlive(), “no longer with us”);
require(getHunger() < 80, "im too hungry to play");
require(getSleepiness() < 80, "im too sleepy to play");
require(getUncleanliness() < 80, "im feeling too gross to play");
// require(getBoredom() > 0, “i dont wanna play”);
lastPlayBlock = block.number;
boredom = 0;
hunger += 10;
sleepiness += 10;
uncleanliness += 5;
addLove(msg.sender, 1);
}
function sleep() public {
require(getAlive(), “no longer with us”);
require(getUncleanliness() < 80, "im feeling too gross to sleep");
require(getSleepiness() > 0, “im not feeling sleepy”);
lastSleepBlock = block.number;
sleepiness = 0;
uncleanliness += 5;
addLove(msg.sender, 1);
}
function getStatus() public view returns (string memory) {
uint256 bridgeNeeded = 0;
string[4] memory goodStatus = [
“gm”,
“im feeling great”,
“all good”,
“i love u”
];
string memory status = goodStatus[block.number % 4];
uint256 _hunger = getHunger();
uint256 _uncleanliness = getUncleanliness();
uint256 _boredom = getBoredom();
uint256 _sleepiness = getSleepiness();
if (getAlive() == false) {
return “no longer with us”;
}
if (_hunger > 50 && _hunger > mostNeeded) {
mostNeeded = _hunger;
status = “im hungry”;
}
if (_uncleanliness > 50 && _uncleanliness > mostNeeded) {
mostNeeded = _uncleanliness;
status = “i need a bath”;
}
if (_boredom > 50 && _boredom > mostNeeded) {
mostNeeded = _boredom;
status = “im bored”;
}
if (_sleepiness > 50 && _sleepiness > mostNeeded) {
mostNeeded = _sleepiness;
status = “im sleepy”;
}
return status;
}
function getAlive() public view returns (bool) {
return getHunger() < 101 && getUncleanliness() < 101 &&
getBoredom () <101 && getSleepiness () <101;
}
function getHunger() public view returns (uint256) {
return hunger + ((block.number – lastFeedBlock) / 50);
}
function getUncleanliness() public view returns (uint256) {
return uncleanliness + ((block.number – lastCleanBlock) / 50);
}
function getBoredom() public view returns (uint256) {
return boredom + ((block.number – lastPlayBlock) / 50);
}
function getSleepiness() public view returns (uint256) {
return sleepiness + ((block.number – lastSleepBlock) / 50);
}
Is there room for non-profit projects on Ethereo?
The question is whether a collectively shared blockchain virtual creature, which brings nothing but the expense and micro-dose of virtual affection, can survive in the long run. And does such a project make any practical sense at all?
The answer is simple: if users are willing to let their ethereal wallets run wild for a little virtual satisfaction of a non-existent creature, then obviously yes. If nothing else, Hofmann, as in the case of Loot, is pushing the boundaries in a direction that others have not yet thought of. The project already inspires the first followers on other smart contract platforms, the author himself published a WagmiPet contract on the Polygon blockchain.
Moreover, Wagmigotchi itself is not the first attempt at blockchain tamagotchi. In March 2021, the Pixelcraft DeFi game studio released the game Aavegotchi, which allows players to take care of (rename, feed, stroke or retrofit) virtual ghosts “Aavegotchi”.
—
However, they are conceived as classic NFT tokens, and the meaning is therefore primarily collecting. In this, the game is no different from the army of other NFT games. Hofmann’s approach is definitely more original and, with its absence of emphasis on the effort to make money on his experiments, also more sympathetic.
The question therefore remains whether Hofmann is a pioneer in discovering new hitherto unsuspected territories or, on the contrary, someone who shows us the blind paths to development.
–