Estoy tratando de comprender mejor cómo implementar contratos inteligentes con tokens construidos sobre Ethereum. Antes de profundizar demasiado en los detalles de implementación con Solidity, me gustaría comprender los posibles obstáculos.
Me gustaría comprender mejor cómo se transportan los datos en los contratos inteligentes y cómo podría funcionar algo como "monedas de colores" de la jerga de Bitcoin.
Entonces, se me ocurrió un ejemplo de cómo creo que se podrían usar los contratos inteligentes según lo que he leído: Beervesting .
Para mi ejemplo, se me ocurrió un nuevo token: BeerCoins
Digamos que estas BeerCoins se crean mediante la minería, y las cervecerías pueden querer comprarlas o extraerlas para crear un mercado de futuros de cerveza... tal vez quieran vender su cerveza con un descuento antes de comenzar a elaborarla.
Aquí hay algunos tipos de transacciones que creo que podrían hacerse con estas BeerCoins:
Entonces, digamos que Alice es una bebedora inteligente de cerveza y quiere comprar su cerveza por adelantado con un descuento usando Ethereum. Puede canjear su cerveza una vez que se haya elaborado (en 2 meses).
Alice intercambia Ethereum por BeerCoins, y las BeerCoins ahora cambian de estado: se pueden canjear por 1 pinta de cerveza cada una .
Ahora, tal vez pase algún tiempo y Bob quiera participar en esta acción de BeerCoin. No quiere esperar al siguiente lote; le gustaría comprar algo del lote actual. Tiene una fiesta en las próximas semanas, y la buena cerveza tarda un par de meses en prepararse. Alice decide darle algunas BeerCoins (completas) a Bob a cambio de algunas Bitcoins.
Ahora, Bob está listo para tener su fiesta, por lo que envía algunas de sus BeerCoins a la cervecería y le envían cerveza. La Cervecería adjunta un número de seguimiento a la transacción, y las BeerCoins se transfieren y vacían tan pronto como se entrega la cerveza (según lo informado por un oráculo , la compañía naviera).
¿Es posible la implementación de este contrato inteligente? ¿Pueden los tokens de Ethereum llevar un estado de esta manera?
¿Existen buenos ejemplos de este tipo de implementación?
Creo que hay algunas cosas a considerar:
Gracias de antemano por la ayuda.
No es realmente factible dar a cada ficha un estado. El costo de almacenamiento sería demasiado grande -> Tendría que darle a cada token un propietario. Podría funcionar si no tienes tantos tokens. (1000l de cerveza cada uno) Pero aún así, una posible implementación sería algo como esto:
contract beer{
struct beerToken{
uint deliveryDate;
uint256 quantity;
...
}
mapping(address=>beer) beers;
}
Una mejor implementación para el escenario que sugirió sería algo como esto:
contract beer{
//the first uint could be a timestamp when the beer gets delivered
//everyone now owns token of a delivery of beer
//you could also add more variables to this
mapping(uint=>mapping(address=>uint256)) balances;
//which = timestamp
function transfer(uint which,address _to, uint256 _value){
if(balances[which][msg.sender]-value>0){
balances[which][msg.sender]-=value;
balances[which][_to]+=value;
}
}
}
Solo pregunta si necesitas más información. Me alegra ayudar.
En mi opinión, está totalmente en el contexto de ethereum y se puede hacer con seguridad.
En lugar de tener un "estado", ¡Bob simplemente se transferiría al último contrato de lote de cerveza oa la dirección x en el momento de la entrega! Luego, estos tokens se quemaron/destruyeron una vez que todos los tokens del lote se recuperaron o se alcanzó x tiempo.
¡Muy buena idea!
Lo siento por los errores tipográficos, estoy en el móvil y en francés :)
Nota: por lo que sé, Oracle está consumiendo el método.
chris hubley
chris hubley