
Los NFTs y la Democratizaciรณn del Arte
Las รฉpocas de grandes cambios culturales conllevan transformaciones significativas en el significado y la accesibilidad del arte. En este artรญculo, nos enfocamos en el blockchain como una nueva revoluciรณn cultural y exploramos cรณmo esta tecnologรญa aporta nuevas cualidades al arte, brindando una oportunidad sin precedentes para democratizarlo.El arte en la era industrialAntes de adentrarnos en web3 y Ethereum como plataformas para el arte, me gustarรญa estudiar el arte en la era industrial. Lue...

En Defensa de las Shitcoins
A menudo escuchamos la narrativa de que las shitcoins son simplemente estafas, y que debemos mantenernos alejados de ellas, ya que solo traen consecuencias negativas tanto para sus usuarios como para el ecosistema de Ethereum. Sin embargo, creo que hay mรกs aspectos a considerar en esta historia. En este artรญculo, me gustarรญa compartir por quรฉ es importante arrojar luz sobre lo que realmente representan las shitcoins, ya que esto nos permitirรก fortalecer la cultura de Ethereum. Espero poder br...
Reto Web3: Escribe artรญculos y gana bounties
โน๏ธ El 7 de Mayo es la entrega de artรญculos, puedes hacerlo en este form. Esta competencia se lleva a cabo por parte de Filosofรญa Cรณdigo, creador de contenido para desarrolladores en web a travรฉs de videos en youtube y artรญculos. Donde se ponen a disposiciรณn 1500$ en stablecoins repartidos en bounties especรญficos para desarrolladores que quieran compartir sus conocimientos con el resto de la comunidad web3. Esto es posible gracias a la confianza que se ha prestado en Filosofรญa Cรณdigo a travรฉs ...
Blockchain como tecnologรญa y cultura.

Los NFTs y la Democratizaciรณn del Arte
Las รฉpocas de grandes cambios culturales conllevan transformaciones significativas en el significado y la accesibilidad del arte. En este artรญculo, nos enfocamos en el blockchain como una nueva revoluciรณn cultural y exploramos cรณmo esta tecnologรญa aporta nuevas cualidades al arte, brindando una oportunidad sin precedentes para democratizarlo.El arte en la era industrialAntes de adentrarnos en web3 y Ethereum como plataformas para el arte, me gustarรญa estudiar el arte en la era industrial. Lue...

En Defensa de las Shitcoins
A menudo escuchamos la narrativa de que las shitcoins son simplemente estafas, y que debemos mantenernos alejados de ellas, ya que solo traen consecuencias negativas tanto para sus usuarios como para el ecosistema de Ethereum. Sin embargo, creo que hay mรกs aspectos a considerar en esta historia. En este artรญculo, me gustarรญa compartir por quรฉ es importante arrojar luz sobre lo que realmente representan las shitcoins, ya que esto nos permitirรก fortalecer la cultura de Ethereum. Espero poder br...
Reto Web3: Escribe artรญculos y gana bounties
โน๏ธ El 7 de Mayo es la entrega de artรญculos, puedes hacerlo en este form. Esta competencia se lleva a cabo por parte de Filosofรญa Cรณdigo, creador de contenido para desarrolladores en web a travรฉs de videos en youtube y artรญculos. Donde se ponen a disposiciรณn 1500$ en stablecoins repartidos en bounties especรญficos para desarrolladores que quieran compartir sus conocimientos con el resto de la comunidad web3. Esto es posible gracias a la confianza que se ha prestado en Filosofรญa Cรณdigo a travรฉs ...
Blockchain como tecnologรญa y cultura.
Share Dialog
Share Dialog

Subscribe to Filosofรญa Cรณdigo

Subscribe to Filosofรญa Cรณdigo
<100 subscribers
<100 subscribers
Emojity is an emoji programming language that compiles directly to EVM bytecode. It's an open-source project under active development managed by Filosofia Codigo and is currently in beta version. Version 0๏ธโฃ๐ค0๏ธโฃ was recently released, and to celebrate it, 1ETH was made available as a reward to anyone who, through a vulnerability, breaks the contract and manages to obtain the funds stored in a staking contract written in Emojity.
Emojity is a programming language for writing smart contracts on Ethereum. You can think of Emojity as an alternative to Solidity and Vyper, with the difference being that you write all the logic using only emojis.
Why use Emojity? Emojity is not only a more creative and fun way to write smart contracts but also aims to help diversify Ethereum at language level to make it more resilient.
The bug bounty is about breaking a simple staking contract written in Emojity. In that contract I staked 0.5 ETH and only I should be able to withdraw it. However, if you manage to break the contract and obtain the funds through an error (whether at the contract or compiler level), those funds are yours. Furthermore, if you write and publish a post-mortem article explaining in detail how you performed the exploit and how to replicate it, including the code or method used, you'll earn a prize of 0.5 ETH.
Currently, I donโt have a development incentive or bug bounty program at the compiler level, but I have open PRs and issues on github, and I will be reviewing all contributions.
Key links:
Contract address deployed in Scroll Mainnet: 0x4Eb6FFa53Ff43EaCdCAcb8813686F19AC1a97bca (Might change each Solidity version)
Emojity Official documentation
Remojix, the web compiler
Compiler github repo (pull requests and issues welcome!)
๐ is a state variable. A hashmap that stores each userโs stake balance.
๐๐ผ is a function that allows any caller (or sender) ๐ค stake ETH by sending it as value ๐ฐ.
๐๐ฝ es a function that returns the callerโs ๐ค stake
๐โ is a view function. Returns the stake of the address sent as parameter ๐
0๏ธโฃ๐ค0๏ธโฃ
๐บ๏ธ๐
๐๐ผ๐ขโฉ๏ธ๐ข
๐
๐๐ค๐ฅ๐๐คโ๐ฐ
โฉ๏ธ1๏ธโฃ
๐
๐๐ฝ๐ขโฉ๏ธ๐ข
๐
๐ข๐
๐๐ฅ๐๐ค
๐๐ค๐ฅ0๏ธโฃ
๐ก๐ค๐0๏ธโฃ๐ธ๐โฝ0๏ธโฃ
โฉ๏ธ1๏ธโฃ
๐
๐โ๐#๏ธโฃ๐โฉ๏ธ๐ข
๐
โฉ๏ธ๐๐
๐
Even though the following contract is not equivalent at the bytecode level, it follows the same logic as the contract in the bug bounty. You can use it as a guide to understand the logic.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract StakingContract {
mapping(address account => uint balance) stakeBalance;
function stake() public payable returns(bool success) {
stakeBalance[msg.sender] += msg.value;
return true;
}
function unstake() public returns(bool success) {
uint senderStake = stakeBalance[msg.sender];
stakeBalance[msg.sender] = 0;
(bool sent, bytes memory data) = msg.sender.call{value: senderStake}("");
data;
return sent;
}
function getStake(address account) public view returns(uint balance) {
return stakeBalance[account];
}
}
[ { "inputs":[ ],
"name":"grapesUpwardsButton",
"outputs":[
{
"internalType":"uint256",
"name":"",
"type":"uint256"
}
],
"stateMutability":"nonpayable",
"type":"function"
},
{
"inputs":[
],
"name":"grapesDownwardsButton",
"outputs":[
{
"internalType":"uint256",
"name":"",
"type":"uint256"
}
],
"stateMutability":"nonpayable",
"type":"function"
},
{
"inputs":[
{
"name":"strawberry",
"type":"address"
}
],
"name":"grapesQuestionMark",
"outputs":[
{
"internalType":"uint256",
"name":"",
"type":"uint256"
}
],
"stateMutability":"view",
"type":"function"
}
]
You can use IEmojiContract to interact from Remix, Foundry, Hardhat or from another contract.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IEmojiContract {
function grapesUpwardsButton() external returns (uint256);
function grapesDownwardsButton() external returns (uint256);
function grapesQuestionMark(address strawberry) external view returns (uint256);
}
Emojity is an emoji programming language that compiles directly to EVM bytecode. It's an open-source project under active development managed by Filosofia Codigo and is currently in beta version. Version 0๏ธโฃ๐ค0๏ธโฃ was recently released, and to celebrate it, 1ETH was made available as a reward to anyone who, through a vulnerability, breaks the contract and manages to obtain the funds stored in a staking contract written in Emojity.
Emojity is a programming language for writing smart contracts on Ethereum. You can think of Emojity as an alternative to Solidity and Vyper, with the difference being that you write all the logic using only emojis.
Why use Emojity? Emojity is not only a more creative and fun way to write smart contracts but also aims to help diversify Ethereum at language level to make it more resilient.
The bug bounty is about breaking a simple staking contract written in Emojity. In that contract I staked 0.5 ETH and only I should be able to withdraw it. However, if you manage to break the contract and obtain the funds through an error (whether at the contract or compiler level), those funds are yours. Furthermore, if you write and publish a post-mortem article explaining in detail how you performed the exploit and how to replicate it, including the code or method used, you'll earn a prize of 0.5 ETH.
Currently, I donโt have a development incentive or bug bounty program at the compiler level, but I have open PRs and issues on github, and I will be reviewing all contributions.
Key links:
Contract address deployed in Scroll Mainnet: 0x4Eb6FFa53Ff43EaCdCAcb8813686F19AC1a97bca (Might change each Solidity version)
Emojity Official documentation
Remojix, the web compiler
Compiler github repo (pull requests and issues welcome!)
๐ is a state variable. A hashmap that stores each userโs stake balance.
๐๐ผ is a function that allows any caller (or sender) ๐ค stake ETH by sending it as value ๐ฐ.
๐๐ฝ es a function that returns the callerโs ๐ค stake
๐โ is a view function. Returns the stake of the address sent as parameter ๐
0๏ธโฃ๐ค0๏ธโฃ
๐บ๏ธ๐
๐๐ผ๐ขโฉ๏ธ๐ข
๐
๐๐ค๐ฅ๐๐คโ๐ฐ
โฉ๏ธ1๏ธโฃ
๐
๐๐ฝ๐ขโฉ๏ธ๐ข
๐
๐ข๐
๐๐ฅ๐๐ค
๐๐ค๐ฅ0๏ธโฃ
๐ก๐ค๐0๏ธโฃ๐ธ๐โฝ0๏ธโฃ
โฉ๏ธ1๏ธโฃ
๐
๐โ๐#๏ธโฃ๐โฉ๏ธ๐ข
๐
โฉ๏ธ๐๐
๐
Even though the following contract is not equivalent at the bytecode level, it follows the same logic as the contract in the bug bounty. You can use it as a guide to understand the logic.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract StakingContract {
mapping(address account => uint balance) stakeBalance;
function stake() public payable returns(bool success) {
stakeBalance[msg.sender] += msg.value;
return true;
}
function unstake() public returns(bool success) {
uint senderStake = stakeBalance[msg.sender];
stakeBalance[msg.sender] = 0;
(bool sent, bytes memory data) = msg.sender.call{value: senderStake}("");
data;
return sent;
}
function getStake(address account) public view returns(uint balance) {
return stakeBalance[account];
}
}
[ { "inputs":[ ],
"name":"grapesUpwardsButton",
"outputs":[
{
"internalType":"uint256",
"name":"",
"type":"uint256"
}
],
"stateMutability":"nonpayable",
"type":"function"
},
{
"inputs":[
],
"name":"grapesDownwardsButton",
"outputs":[
{
"internalType":"uint256",
"name":"",
"type":"uint256"
}
],
"stateMutability":"nonpayable",
"type":"function"
},
{
"inputs":[
{
"name":"strawberry",
"type":"address"
}
],
"name":"grapesQuestionMark",
"outputs":[
{
"internalType":"uint256",
"name":"",
"type":"uint256"
}
],
"stateMutability":"view",
"type":"function"
}
]
You can use IEmojiContract to interact from Remix, Foundry, Hardhat or from another contract.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IEmojiContract {
function grapesUpwardsButton() external returns (uint256);
function grapesDownwardsButton() external returns (uint256);
function grapesQuestionMark(address strawberry) external view returns (uint256);
}
No activity yet