
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...
🐞Emojity Bug Hunt: Win 1ETH! 🕵️♂️💰
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.What is an Emoji language?Emojity is a programming language...

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...
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...
🐞Emojity Bug Hunt: Win 1ETH! 🕵️♂️💰
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.What is an Emoji language?Emojity is a programming language...

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...
Blockchain como tecnología y cultura.

Subscribe to Filosofía Código

Subscribe to Filosofía Código
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
Emojity es un lenguaje emoji que compila directamente a bytecode de la EVM. Es un proyecto open source en desarrollo activo gestionado por Filosofía Código y se encuentra actualmente en versión beta. La versión 0️⃣🤗0️⃣ fue lanzada recientemente y para celebrarlo se puso a disposición 1 ETH como recompensa a quién, por medio de una vulnerabilidad, rompa el contrato y logre obtener los fondos que están almacenados en un contrato escrito en Emojity.
Emojity es un lenguaje de programación para escribir smart contracts en Ethereum. Puedes pensar en Emojity como una alternativa a Solidity y Vyper, con la diferencia que escribes toda la lógica usando únicamente emojis.
¿Porqué usar Emojity? Emojity no solo es una manera más creativa y divertida de escribir smart contracts, sino que también tiene como misión ayudar a diversificar a nivel de lenguaje para que Ethereum sea más resiliente.
El contrato en cuestión es un staking simple, donde yo stakíe 0.5 ETH y solo yo debería ser capáz de sacarlo. Ahora bién, si por medio de un error (ya sea a nivel de contrato o de compilador) logras romper el contrato y obtener los fondos, esos fondos son tuyos. Y además, si escribes y publicas un artículo post mortem explicando a detalle y de manera replicable cómo realizaste el exploit, que incluya el código o método utilizado, te ganarás un premio de 0.5 ETH.
Actualmente no cuento con un programa de incentivos por desarrollo o de bug bounties general a nivel compilador pero tengo los PR e issues abiertos en github y estaré revisando las contribuciones.
Links clave:
Address del contrato lanzado en Scroll Mainnet: 0x4Eb6FFa53Ff43EaCdCAcb8813686F19AC1a97bca(Sujeto a cambio cada versión nueva de Emojity)
Documentación oficial de Emojity
Remojix, el compilador web
Repositorio en Github del compilador (¡pull requests e issues bienvenidos!)
🍇 es una variable de estado. Un hashmap que almacena el staking de cada usuario.
🍇🔼 es una función que permite a cualquier caller (o sender) 👤 stakear ETH enviándolo como value 💰.
🍇🔽 es una función que devuelve el staking que el caller 👤
🍇❓ es una función tipo view. Devuelve el staking del address enviado como párametro 🍓
0️⃣🤗0️⃣
🗺️🍇
🍇🔼📢↩️🔢
🏁
🍇👤📥🍇👤➕💰
↩️1️⃣
🔚
🍇🔽📢↩️🔢
🏁
🔢🍓
🍓📥🍇👤
🍇👤📥0️⃣
📡👤📍0️⃣💸🍓⛽0️⃣
↩️1️⃣
🔚
🍇❓👀#️⃣🍓↩️🔢
🏁
↩️🍇🍓
🔚
A pesar que el siguiente contrato no es equivalente a nivel de bytecode, sigue la misma lógica que el contrato en del bug bounty. Puedes usarlo para guiarte y entender la lógica.
// 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"
}
]
Puedes usar IEmojiContract para interactuar desde Remix, Foundry, Hardhat u otro contrato.
// 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 es un lenguaje emoji que compila directamente a bytecode de la EVM. Es un proyecto open source en desarrollo activo gestionado por Filosofía Código y se encuentra actualmente en versión beta. La versión 0️⃣🤗0️⃣ fue lanzada recientemente y para celebrarlo se puso a disposición 1 ETH como recompensa a quién, por medio de una vulnerabilidad, rompa el contrato y logre obtener los fondos que están almacenados en un contrato escrito en Emojity.
Emojity es un lenguaje de programación para escribir smart contracts en Ethereum. Puedes pensar en Emojity como una alternativa a Solidity y Vyper, con la diferencia que escribes toda la lógica usando únicamente emojis.
¿Porqué usar Emojity? Emojity no solo es una manera más creativa y divertida de escribir smart contracts, sino que también tiene como misión ayudar a diversificar a nivel de lenguaje para que Ethereum sea más resiliente.
El contrato en cuestión es un staking simple, donde yo stakíe 0.5 ETH y solo yo debería ser capáz de sacarlo. Ahora bién, si por medio de un error (ya sea a nivel de contrato o de compilador) logras romper el contrato y obtener los fondos, esos fondos son tuyos. Y además, si escribes y publicas un artículo post mortem explicando a detalle y de manera replicable cómo realizaste el exploit, que incluya el código o método utilizado, te ganarás un premio de 0.5 ETH.
Actualmente no cuento con un programa de incentivos por desarrollo o de bug bounties general a nivel compilador pero tengo los PR e issues abiertos en github y estaré revisando las contribuciones.
Links clave:
Address del contrato lanzado en Scroll Mainnet: 0x4Eb6FFa53Ff43EaCdCAcb8813686F19AC1a97bca(Sujeto a cambio cada versión nueva de Emojity)
Documentación oficial de Emojity
Remojix, el compilador web
Repositorio en Github del compilador (¡pull requests e issues bienvenidos!)
🍇 es una variable de estado. Un hashmap que almacena el staking de cada usuario.
🍇🔼 es una función que permite a cualquier caller (o sender) 👤 stakear ETH enviándolo como value 💰.
🍇🔽 es una función que devuelve el staking que el caller 👤
🍇❓ es una función tipo view. Devuelve el staking del address enviado como párametro 🍓
0️⃣🤗0️⃣
🗺️🍇
🍇🔼📢↩️🔢
🏁
🍇👤📥🍇👤➕💰
↩️1️⃣
🔚
🍇🔽📢↩️🔢
🏁
🔢🍓
🍓📥🍇👤
🍇👤📥0️⃣
📡👤📍0️⃣💸🍓⛽0️⃣
↩️1️⃣
🔚
🍇❓👀#️⃣🍓↩️🔢
🏁
↩️🍇🍓
🔚
A pesar que el siguiente contrato no es equivalente a nivel de bytecode, sigue la misma lógica que el contrato en del bug bounty. Puedes usarlo para guiarte y entender la lógica.
// 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"
}
]
Puedes usar IEmojiContract para interactuar desde Remix, Foundry, Hardhat u otro contrato.
// 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