Cómo convertir tokens ERC-20 de nuevo a Ether[eum]

Según tengo entendido, Ether se convierte en un token ERC-20 (como BAT), a través de un contrato inteligente. Ether se asigna a ese contrato enviando Ether a la dirección del contrato inteligente. Por favor corrígeme si me equivoco en algo de eso.

Sin embargo, mi pregunta es, ¿cómo se convierte un token ERC-20 (como BAT) de nuevo a Ether? Si el contrato inteligente mantiene la relación entre Ether que le envié, ¿cómo convierto el token ERC-20 nuevamente a Ether si ya no lo quiero? En cambio, me gustaría usar Ether para otros fines.

Gracias por ayudarme a entender esto.

Respuestas (5)

Creo que lo has entendido un poco mal.

No está convirtiendo tokens ERC20 en ether o viceversa. Estás meramente cambiándolo por éter.

El contrato inteligente funciona así:

La cantidad de éter que envió devuelve la cantidad preespecificada de tokens ERC20. Esto se basa en la tarifa que se codifica durante la creación del contrato.

Por ejemplo, considera esto:

uint256 token_per_wei = 1;

Esto le devolverá 10 ^ 18 tokens personalizados (ya que 1 éter = 10 ^ 18 wei).

¿Qué le pasa a tu éter?

Cada contrato tiene un conjunto de destinatarios de fondos. Su ether enviado se transfiere a su cuenta y ahora les pertenece.

Piénsalo de esta manera:

Estás comprando sus tokens personalizados usando el éter.

¿Cómo recuperar el éter?

Cada token tiene una tasa una vez que su ICO termina. Necesita vender en los intercambios en los que cotizan.

¡Buena suerte!

La respuesta corta es:

Debe ir y encontrar un intercambio que enumere sus tokens e intercambiarlos para recuperar sus éteres.

La respuesta larga está abajo:

Ether se convierte en un token ERC-20 (como BAT), a través de un contrato inteligente.

De hecho, no soy una conversión.

Según https://ethereum.org/ether , ether es un combustible para operar la plataforma de aplicaciones distribuidas Ethereum (o podemos decir que ether es la moneda nativa en Ethereum), y no cumple con el estándar ERC20. (Es por eso que necesitamos algo como weth ).

Los tokens ERC20 son solo contratos inteligentes (o los programas tontos pueden obtener y establecer estados en Ethereum) que se ajustan al estándar ERC20.

Si lee el código fuente del contrato de token BAT , encontrará un método llamado createTokens:

/// @dev Accepts ether and creates new BAT tokens.
function createTokens() payable external {
  if (isFinalized) throw;
  if (block.number < fundingStartBlock) throw;
  if (block.number > fundingEndBlock) throw;
  if (msg.value == 0) throw;

  uint256 tokens = safeMult(msg.value, tokenExchangeRate); // check that we're not over totals
  uint256 checkedSupply = safeAdd(totalSupply, tokens);

  // return money if something goes wrong
  if (tokenCreationCap < checkedSupply) throw;  // odd fractions won't be found

  totalSupply = checkedSupply;
  balances[msg.sender] += tokens;  // safeAdd not needed; bad semantics to use here
  CreateBAT(msg.sender, tokens);  // logs token creation
}

Así que el proceso es básicamente así:

  1. Usted envía o transfiere los éteres al contrato. ( Nota: ¡Estos éteres ya no son de su propiedad! )
  2. el contrato multiplica los éteres con tokenExchangeRate, que está predefinido con 6400, como su saldo simbólico.
  3. el contrato registra el saldo del token para la dirección (donde envió el éter).
  4. Si finalizese llama, todos los éteres propiedad del contacto se enviarán a ethFundDeposit, que es 0x88e2efac3d2ef957fcd82ec201a506871ad06204una billetera multifirma propiedad de Brave International (Fuente aquí: https://etherscan.io/token/BAT#readContract )

En este caso, no puede volver a convertir los tokens BAT en ethers ya que finalizó la venta colectiva y el refundmétodo no se ejecutará:

/// @dev Allows contributors to recover their ether in the case of a failed funding campaign.
function refund() external {
  if(isFinalized) throw;                       // prevents refund if operational
  if (block.number <= fundingEndBlock) throw; // prevents refund until sale period is over
  if(totalSupply >= tokenCreationMin) throw;  // no refunds if we sold enough
  if(msg.sender == batFundDeposit) throw;    // Brave Intl not entitled to a refund
  uint256 batVal = balances[msg.sender];
  if (batVal == 0) throw;
  balances[msg.sender] = 0;
  totalSupply = safeSubtract(totalSupply, batVal); // extra safe
  uint256 ethVal = batVal / tokenExchangeRate;     // should be safe; previous throws covers edges
  LogRefund(msg.sender, ethVal);               // log it 
  if (!msg.sender.send(ethVal)) throw;       // if you're using a contract; make sure it works with .send gas limits
}

Entonces, si no desea estos tokens, debe intercambiarlos para recuperar sus éteres en algunos intercambios (enumera sus tokens).

Veo muchos carteles que responden a esta pregunta sugiriendo los cambios de moneda. Sin embargo, la solución más interesante es crear un contrato inteligente que pueda aceptar tokens por ether a un tipo de cambio acordado. Claramente, esto no es tan líquido como usar un intercambio para determinar los precios de mercado y operar rápidamente.

Sin embargo, para componer tokens personalizados que se usarán en aplicaciones pequeñas y/o temporales, no hay razón para que un contrato inteligente no pueda manejar el intercambio de tokens por ether. Siempre que un contrato respalde un mecanismo para intercambiar tokens por ether con un tipo de cambio dado o propuesto, se puede hacer sin mucho esfuerzo. El contrato en sí puede contener ether o puede proporcionar la funcionalidad para realizar transacciones de dinero en nombre de un comprador de fichas. Puedo poner un código de muestra más tarde, si todavía estás interesado.

En general, no hay conversión entre ethereum y un token ERC-20 (al menos en el sentido en que lo estás describiendo). Sin embargo, es exactamente la misma "conversión" que ocurre cuando hablamos de conversiones de moneda fiduciaria.

Digamos que estoy en los Estados Unidos y estoy en un restaurante que no acepta tarjetas de crédito y no tengo dólares estadounidenses. Sin embargo, tengo un canadiense de $100 en efectivo. No puedo presionar un botón mágico y convertir mis dólares canadienses en dólares estadounidenses para pagar mi comida. Sin embargo, supongamos que también está en el restaurante, tiene algunos dólares estadounidenses y planea venir a Canadá. Podrías estar dispuesto a venderme tus dólares estadounidenses. Podrías decir "tu factura es de $50 (EE. UU.). Te daré $50 USD si me das $65 canadienses". Y yo diría "trato justo" y te daría $65 CAD y tú me darías $50 USD. Fíjate cómo esto fue un intercambio, no una transmutación (como convertir agua en hielo): te di algo y tú me diste algo diferente a cambio. Esto sucede a escalas mucho mayores utilizando sistemas computarizados en el día a día. Estos son los mercados de divisas (forex). Las criptomonedas y los tokens se pueden intercambiar utilizando exactamente el mismo mecanismo. En lugar de enumerar dólares canadienses y dólares estadounidenses (aunque técnicamente no hay nada que impida que eso suceda), es posible que vea dólares estadounidenses, ETH y BAT.

Puede pensar en los contratos de token ERC-20 como un código para operar una lista de saldos del token relevante. Por ejemplo, BAT realiza un seguimiento de qué cuentas "poseen" cuántos BAT. Las claves privadas de su cuenta ethereum autorizan transacciones en su nombre dentro del contrato BAT.

Dije "generalmente" arriba; existe la posibilidad de construir algo como TheDAO . Con TheDAO, uno podría "convertir" tokens DAO en éter. Esto fue posible porque el contrato de TheDAO en realidad tenía ether almacenado (lo que generalmente no es el caso con un contrato de token). (Simplificando un poco las cosas) uno podría llamar a una función en TheDAO y destruir los tokens de TheDAO y hacer que el contrato le envíe una parte del éter contenido en el contrato.

Entonces... tuve una Q similar hoy, pero encontré este hilo MUY complicado (no estúpido... pero tampoco demasiado técnico).

Entonces pregunté en un hilo separado: ¿ Alguna forma rápida y fácil de convertir tokens ERC-20?

Para resumir... Ethersweep lo hace todo de una sola vez. http://ethersweep.com

Ahórrate una semana.

Solo como una nota de advertencia para cualquier otra persona que busque usar este método: este servicio requiere que el usuario ingrese su clave privada en el navegador. Incluso si el servicio en sí es seguro, de lo cual no hay garantía, todavía está ingresando su clave privada en un navegador, que puede ser inseguro...
Grito justo, no puedo comentar sobre los riesgos de seguridad del navegador, pero fue bastante sencillo... aquí está la URL de salida si es útil: ethersweep.com/transaction/status/…