La pregunta no tiene respuesta por eso vuelvo a preguntar. ¿Alguien puede decirme y señalarme (corregirme) dónde está el problema?
Eth ha sido enviado al contrato de crowdsale con éxito. BalanceOf y la cantidad se calcularon correctamente. Desafortunadamente, se muestra con el error del lado del contribuyente. ¿Por qué está pasando esto? ¿Qué me perdí aquí? Gracias Roberto.
Contrato de token https://ropsten.etherscan.io/address/0x6f5c43f62b4b18aa8ed37b42f2804f7049cbe0e9#code
Contrato de CrowdSale https://ropsten.etherscan.io/address/0x9b94e1894abe2051e6e96bf1b57fe5d3adbbc5aa#code
Entorno == Inyectado Web3 Ropsten MetaMask/Remix
Más detalles están aquí. ¿Por qué se envía una cantidad incorrecta de tokens de acuerdo con la tarifa actual al contribuyente?
No tiene la función de transferencia de tokens en el contrato de venta colectiva, por lo que el saldo de tokens de la dirección del inversor no se puede cambiar después de la inversión. Debe modificar buy()
el método y agregarle la funcionalidad de transferencia de tokens.
function buy ()
payable public
whenNotPaused
beforeDeadline
afterStartTime
saleNotClosed
{
require(msg.value >= minContribution);
uint amount = msg.value;
// Compute the number of tokens to be rewarded to the sender
// Note: it's important for this calculation that both wei
// and PDT have the same number of decimal places (18)
uint numTokens = amount.mul(rate);
// --- NEW CODE STARTS HERE -------------------------------------------
require(tokenReward.transfer(msg.sender, numTokens));
// --- NEW CODE ENDS HERE ---------------------------------------------
// update the total amount raised
amountRaised = amountRaised.add(amount);
// update the sender's balance of wei contributed
balanceOf[msg.sender] = balanceOf[msg.sender].add(amount);
// add to the token balance of the sender
tokenBalanceOf[msg.sender] = tokenBalanceOf[msg.sender].add(numTokens);
FundTransfer(msg.sender, amount, true);
// Check if the funding goal or cap have been reached
checkFundingGoal();
checkFundingCap();
}
Además de hacer que este código funcione, debe transferir algunos tokens a la dirección del contrato de venta colectiva. Si no desea hacer eso y desea mantener todos los tokens en una ASSET_MANAGER_WALLET
dirección separada, entonces debe approve
agregar algunos tokens desde esta dirección a la dirección del contrato de venta colectiva y, en lugar de llamar a transfer
la función, debe llamar a transferFrom
la función.
require(tokenReward.transferFrom(ASSET_MANAGER_WALLET, msg.sender, numTokens))
Dmitro Zarezenko
Roberto
Dmitro Zarezenko
Roberto
Dmitro Zarezenko
Roberto