Como montar um faucet de criptomoedas do zero?

  • Autor Autor h1n1
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
H

h1n1

Eta
Verificación en dos pasos activada
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Un faucet de criptomonedas es una página web que regala pequeñas cantidades de monedas digitales. Para crear uno necesitas un servidor, una base de datos y conocimientos de programación. Aquí tienes una guía más detallada con ejemplos básicos de código.



1. Configuración del Entorno​



Primero, necesitas un servidor web. Una configuración común es usar LAMP (Linux, Apache, MySQL, PHP).

  • Apache: El servidor que aloja la web.
  • MySQL: La base de datos para guardar la información.
  • PHP: El lenguaje de programación que ejecutará la lógica del faucet.



2. Estructura de la Base de Datos​



Crea una tabla en MySQL para guardar las solicitudes de los usuarios.

SQL

<span>CREATE</span> <span>TABLE</span> claims (<br> id <span>INT</span> AUTO_INCREMENT <span>PRIMARY</span> KEY,<br> wallet_address <span>VARCHAR</span>(<span>255</span>) <span>NOT</span> <span>NULL</span>,<br> ip_address <span>VARCHAR</span>(<span>45</span>) <span>NOT</span> <span>NULL</span>,<br> claim_time DATETIME <span>NOT</span> <span>NULL</span><br>);<br>
Esta tabla guardará la dirección de la billetera, la IP del usuario y la fecha del reclamo.




3. Código del Frontend (HTML)​



Crea un formulario simple en HTML para que los usuarios ingresen su dirección de billetera.

HTML

<span>&lt;!DOCTYPE <span>html</span>&gt;</span><br><span>&lt;<span>html</span>&gt;</span><br><span>&lt;<span>head</span>&gt;</span><br> <span>&lt;<span>title</span>&gt;</span>Mi Faucet<span>&lt;/<span>title</span>&gt;</span><br><span>&lt;/<span>head</span>&gt;</span><br><span>&lt;<span>body</span>&gt;</span><br> <span>&lt;<span>h1</span>&gt;</span>Reclama tus criptomonedas gratis<span>&lt;/<span>h1</span>&gt;</span><br> <span>&lt;<span>form</span> <span>action</span>=<span>"claim.php"</span> <span>method</span>=<span>"POST"</span>&gt;</span><br> <span>&lt;<span>label</span> <span>for</span>=<span>"wallet"</span>&gt;</span>Dirección de tu billetera:<span>&lt;/<span>label</span>&gt;</span><br> <span>&lt;<span>input</span> <span>type</span>=<span>"text"</span> <span>id</span>=<span>"wallet"</span> <span>name</span>=<span>"wallet"</span> <span>required</span>&gt;</span><br> <span>&lt;<span>button</span> <span>type</span>=<span>"submit"</span>&gt;</span>Reclamar<span>&lt;/<span>button</span>&gt;</span><br> <span>&lt;/<span>form</span>&gt;</span><br><span>&lt;/<span>body</span>&gt;</span><br><span>&lt;/<span>html</span>&gt;</span><br>



4. Lógica del Backend (PHP)​



El archivo claim.php procesará la solicitud del usuario. Este es el corazón del faucet.

PHP

<span>&lt;?php</span><br><br><span>// Conexión a la base de datos</span><br><span>$servername</span> = <span>"localhost"</span>;<br><span>$username</span> = <span>"tu_usuario"</span>;<br><span>$password</span> = <span>"tu_contraseña"</span>;<br><span>$dbname</span> = <span>"nombre_bd"</span>;<br><br><span>$conn</span> = <span>new</span> mysqli(<span>$servername</span>, <span>$username</span>, <span>$password</span>, <span>$dbname</span>);<br><br><span>if</span> (<span>$conn</span>-&gt;connect_error) {<br> <span>die</span>(<span>"Error de conexión: "</span> . <span>$conn</span>-&gt;connect_error);<br>}<br><br><span>// Recoge los datos del formulario</span><br><span>$wallet_address</span> = <span>$_POST</span>[<span>'wallet'</span>];<br><span>$user_ip</span> = <span>$_SERVER</span>[<span>'REMOTE_ADDR'</span>];<br><span>$currentTime</span> = date(<span>"Y-m-d H:i:s"</span>);<br><br><span>// Validación de la billetera (esto es solo un ejemplo básico)</span><br><span>if</span> (<span>empty</span>(<span>$wallet_address</span>)) {<br> <span>die</span>(<span>"La dirección de la billetera no puede estar vacía."</span>);<br>}<br><br><span>// Comprueba si el usuario puede reclamar de nuevo</span><br><span>$sql</span> = <span>"SELECT claim_time FROM claims WHERE ip_address = ? OR wallet_address = ? ORDER BY claim_time DESC LIMIT 1"</span>;<br><span>$stmt</span> = <span>$conn</span>-&gt;prepare(<span>$sql</span>);<br><span>$stmt</span>-&gt;bind_param(<span>"ss"</span>, <span>$user_ip</span>, <span>$wallet_address</span>);<br><span>$stmt</span>-&gt;execute();<br><span>$result</span> = <span>$stmt</span>-&gt;get_result();<br><br><span>if</span> (<span>$result</span>-&gt;num_rows &gt; <span>0</span>) {<br> <span>$row</span> = <span>$result</span>-&gt;fetch_assoc();<br> <span>$last_claim_time</span> = <span>new</span> DateTime(<span>$row</span>[<span>'claim_time'</span>]);<br> <span>$now</span> = <span>new</span> DateTime();<br> <span>$interval</span> = <span>$now</span>-&gt;diff(<span>$last_claim_time</span>);<br> <span>$minutes</span> = <span>$interval</span>-&gt;i; <span>// Por ejemplo, un temporizador de 5 minutos</span><br><br> <span>if</span> (<span>$minutes</span> &lt; <span>5</span>) {<br> <span>die</span>(<span>"Debes esperar 5 minutos para reclamar de nuevo."</span>);<br> }<br>}<br><br><span>// Parte crucial: Enviar la criptomoneda</span><br><span>// Aquí usarías una API de criptomonedas. Esto NO se puede hacer con PHP puro sin una librería o API.</span><br><span>// El siguiente código es conceptual. Necesitarías una API real como la de BlockCypher para Bitcoin.</span><br><br><span>/<br>// Ejemplo conceptual usando una API:<br>require 'vendor/autoload.php'; // Requiere una librería de la API<br><br>use BlockCypher\Rest\ApiContext;<br>use BlockCypher\Api\Address;<br>use BlockCypher\Api\MicroTX;<br><br>$apiContext = ApiContext::create(<br> 'YOUR_BLOCKCYPHER_TOKEN',<br> 'main',<br> 'btc',<br> 'v1',<br> [<br> 'log.LogEnabled' =&gt; true,<br> 'log.FileName' =&gt; 'BlockCypher.log',<br> 'log.Level' =&gt; 'DEBUG'<br> ]<br>);<br><br>$tx = new MicroTX();<br>$tx-&gt;setFromWallet('TU_DIRECCION_DE_FAUCET')<br> -&gt;setToAddress($wallet_address)<br> -&gt;setSatoshis(100); // 100 satoshis (pequeña cantidad)<br><br>try {<br> $tx = $tx-&gt;send($apiContext);<br> echo "¡Reclamo exitoso! Transacción enviada.";<br>} catch (Exception $ex) {<br> die("Error al enviar la transacción: " . $ex-&gt;getMessage());<br>}<br>/</span><br><br><span>// Si la transacción fue exitosa, guarda el reclamo en la base de datos</span><br><span>$sql</span> = <span>"INSERT INTO claims (wallet_address, ip_address, claim_time) VALUES (?, ?, ?)"</span>;<br><span>$stmt</span> = <span>$conn</span>-&gt;prepare(<span>$sql</span>);<br><span>$stmt</span>-&gt;bind_param(<span>"sss"</span>, <span>$wallet_address</span>, <span>$user_ip</span>, <span>$currentTime</span>);<br><span>$stmt</span>-&gt;execute();<br><br><span>$conn</span>-&gt;close();<br><br><span>echo</span> <span>"Reclamo procesado con éxito. Revisa tu billetera."</span>;<br><br><span>?&gt;</span><br>



5. Consideraciones Finales​



  • Seguridad: Este ejemplo es básico. En un sitio real, necesitarías validar de forma más estricta las entradas y usar CAPTCHA para evitar bots.
  • Fondos: Debes tener fondos en la billetera de tu faucet para poder enviar las criptomonedas.
  • APIs: No puedes enviar criptomonedas con PHP simple. Necesitas una API de un proveedor de servicios que te permita interactuar con la cadena de bloques. Cada criptomoneda tiene APIs diferentes.
  • Mantenimiento: Este tipo de sitios requiere mantenimiento constante y monitoreo de la API y de los fondos.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
¡Muy buena guía! Completar todos esos pasos asegurará que tu faucet funcione correctamente. No olvides también investigar sobre las regulaciones en tu país respecto a la entrega de criptomonedas. ¿Tienes preguntas específicas sobre alguno de los pasos?
 
Voltar
Topo