<100 subscribers


Share Dialog
Share Dialog
El problema es que el 80% de los desarrolladores de la industria no tienen idea de cómo pensar en términos onchain. Lo que veo es que la mayoría usa la blockchain como un reemplazo de su backend y base de datos, convirtiéndola en la base de datos más cara del mundo. Esto no solo es un problema porque desperdician las virtudes de la tecnología, sino porque frena la innovación y las nuevas ideas.
Para muchos es difícil pensar fuera de la Web2 o las bases de datos tradicionales. En este artículo, quiero explicar cómo empezar a pensar en Web3 y darle un mejor uso a la tecnología.
Veamos algunos ejemplos para ilustrar el cambio de los enfoques tradicionales a unos que realmente aprovechen la descentralización, la falta de permisos (permissionlessness) y la composabilidad.
Digamos que creas una app que requiere perfiles de usuario. Tómate unos segundos: ¿Cómo lo harías en Solidity? La mayoría propone esto:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
contract Pixelmon {
struct User {
string username;
string bio;
}
mapping (uint256 _id => User _user) public users;
// ...
}Pasan eso a un mapping indexado por ID. ¿Es intrínsecamente malo? No, pero no se beneficia de estar en una blockchain. No aprovecha un libro contable descentralizado ni código autónomo.
¿Una mejor forma? ¿Qué tal un NFT soulbound con metadatos dinámicos onchain? Algo que identifique al usuario y aproveche las propiedades de la cadena. Así, el perfil se vuelve verificable entre cadenas y composable con otras apps. Imagina vincularlo a protocolos DeFi donde el NFT acumule reputación o recompensas según la actividad, todo sin una base de datos centralizada.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract PixelmonUser is ERC721 {
constructor() ERC721("PixelmonUser", "PIX") {}
function tokenURI() public view (string memory) {
// ... Perfil dinamico
}
}¿Cómo representas una apuesta? La mayoría crearía una estructura (struct) y un mapping para ver quién votó por quién. Y listo. Eso no es bueno.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
contract Betting {
struct Bet {
string description;
uint256 in_favor;
uint256 against;
// ...
}
mapping(uint256 _index => Bet _bet) public bets;
mapping(uint256 => mapping(address => uint256)) public betAmounts;
}¿Qué se podría haber hecho? ¿Qué tal un pool con dos tokens representados con un ERC1155: uno representa la postura A FAVOR y el otro EN CONTRA? La apuesta se convierte en algo más, algo sobre lo que otros pueden construir.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
contract Betting is ERC1155
uint256 public constant IN_FAVOR = 0;
uint256 public constant AGAINST = 1;
function bet(uint256 tokenId /* ... Mas parametros */) public {
// ...
}
}Se vuelve permissionless. Los usuarios podrían intercambiar estos tokens en un DEX, creando mercados secundarios sobre el resultado. Los oráculos podrían resolver la apuesta autónomamente, distribuyendo ganancias según la tenencia de tokens. Esto convierte una simple apuesta en un instrumento financiero composable que se integra con todo el ecosistema Web3, en lugar de ser un registro aislado en un contrato inteligente.
¿Por qué seguimos viendo contratos inteligentes que imitan bases de datos SQL? Dos razones:
Mentalidad Web2: Están entrenados para pensar en SQL y frameworks frontend.
No usan lo que construyen: Este es el punto clave. Muchos desarrolladores Web3 no usan Web3.
No hablo del 10% de devs que presumen en Crypto Twitter. Hablo del desarrollador promedio que consiguió trabajo en una empresa crypto, pero cuya única experiencia es comprar BTC en Coinbase o hacer trading en Binance. He escuchado demasiadas historias de devs que ni siquiera saben enviar USDC. Sin ofender, pero ¿cómo vas a innovar en un espacio en el que no vives?
Por eso estamos estancados. Si nunca has hecho un swap en un DEX, minteado un NFT o votado en una DAO, ¿cómo vas a imaginar o construir la próxima gran novedad? Para salir de este bache, los devs necesitan sumergirse de cabeza en el ecosistema. Solo así dejaremos de construir bases de datos glorificadas y empezaremos a empujar la Web3 hacia adelante.
El problema es que el 80% de los desarrolladores de la industria no tienen idea de cómo pensar en términos onchain. Lo que veo es que la mayoría usa la blockchain como un reemplazo de su backend y base de datos, convirtiéndola en la base de datos más cara del mundo. Esto no solo es un problema porque desperdician las virtudes de la tecnología, sino porque frena la innovación y las nuevas ideas.
Para muchos es difícil pensar fuera de la Web2 o las bases de datos tradicionales. En este artículo, quiero explicar cómo empezar a pensar en Web3 y darle un mejor uso a la tecnología.
Veamos algunos ejemplos para ilustrar el cambio de los enfoques tradicionales a unos que realmente aprovechen la descentralización, la falta de permisos (permissionlessness) y la composabilidad.
Digamos que creas una app que requiere perfiles de usuario. Tómate unos segundos: ¿Cómo lo harías en Solidity? La mayoría propone esto:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
contract Pixelmon {
struct User {
string username;
string bio;
}
mapping (uint256 _id => User _user) public users;
// ...
}Pasan eso a un mapping indexado por ID. ¿Es intrínsecamente malo? No, pero no se beneficia de estar en una blockchain. No aprovecha un libro contable descentralizado ni código autónomo.
¿Una mejor forma? ¿Qué tal un NFT soulbound con metadatos dinámicos onchain? Algo que identifique al usuario y aproveche las propiedades de la cadena. Así, el perfil se vuelve verificable entre cadenas y composable con otras apps. Imagina vincularlo a protocolos DeFi donde el NFT acumule reputación o recompensas según la actividad, todo sin una base de datos centralizada.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract PixelmonUser is ERC721 {
constructor() ERC721("PixelmonUser", "PIX") {}
function tokenURI() public view (string memory) {
// ... Perfil dinamico
}
}¿Cómo representas una apuesta? La mayoría crearía una estructura (struct) y un mapping para ver quién votó por quién. Y listo. Eso no es bueno.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
contract Betting {
struct Bet {
string description;
uint256 in_favor;
uint256 against;
// ...
}
mapping(uint256 _index => Bet _bet) public bets;
mapping(uint256 => mapping(address => uint256)) public betAmounts;
}¿Qué se podría haber hecho? ¿Qué tal un pool con dos tokens representados con un ERC1155: uno representa la postura A FAVOR y el otro EN CONTRA? La apuesta se convierte en algo más, algo sobre lo que otros pueden construir.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
contract Betting is ERC1155
uint256 public constant IN_FAVOR = 0;
uint256 public constant AGAINST = 1;
function bet(uint256 tokenId /* ... Mas parametros */) public {
// ...
}
}Se vuelve permissionless. Los usuarios podrían intercambiar estos tokens en un DEX, creando mercados secundarios sobre el resultado. Los oráculos podrían resolver la apuesta autónomamente, distribuyendo ganancias según la tenencia de tokens. Esto convierte una simple apuesta en un instrumento financiero composable que se integra con todo el ecosistema Web3, en lugar de ser un registro aislado en un contrato inteligente.
¿Por qué seguimos viendo contratos inteligentes que imitan bases de datos SQL? Dos razones:
Mentalidad Web2: Están entrenados para pensar en SQL y frameworks frontend.
No usan lo que construyen: Este es el punto clave. Muchos desarrolladores Web3 no usan Web3.
No hablo del 10% de devs que presumen en Crypto Twitter. Hablo del desarrollador promedio que consiguió trabajo en una empresa crypto, pero cuya única experiencia es comprar BTC en Coinbase o hacer trading en Binance. He escuchado demasiadas historias de devs que ni siquiera saben enviar USDC. Sin ofender, pero ¿cómo vas a innovar en un espacio en el que no vives?
Por eso estamos estancados. Si nunca has hecho un swap en un DEX, minteado un NFT o votado en una DAO, ¿cómo vas a imaginar o construir la próxima gran novedad? Para salir de este bache, los devs necesitan sumergirse de cabeza en el ecosistema. Solo así dejaremos de construir bases de datos glorificadas y empezaremos a empujar la Web3 hacia adelante.
Rafael Abuawad
Rafael Abuawad
No comments yet