Números Random en el Blockchain

Ahmed Castro - Jun 16 '21 - - Dev Community

Los números random en el blockchain pueden ser útiles en muchos casos, por ejemplo en loterías, NTFs, asignación de recursos y deberes o en mecanismos de consenso.

Con ayuda del oráculo de Chainlink podemos interactuar obtener números random de manera segura en el blockchain.

  1. Obtén Link en tu wallet por medio de un Exchange en el caso de un Mainnet o por medio de un Faucet en el caso de un Testnet.

  2. Coloca los parámetros dependiendo del blockchain en el que te encuentres. Aquí obtienes la lista completa de parámetros.

En este video haremos uso de los números rándom de Chainlink en Kovan Testnet. Obtendremos el valor del par ETH/USD.

// SPDX-License-Identifier: MIT
pragma solidity 0.8.5;

import "https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/dev/VRFConsumerBase.sol";

contract RandomNumberConsumer is VRFConsumerBase {

    bytes32 internal keyHash;
    uint256 internal fee;

    uint256 public randomResult;

    constructor() 
        VRFConsumerBase(
            0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B, // VRF Coordinator
            0x01BE23585060835E02B77ef475b0Cc51aA1e0709  // LINK Token
        ) public
    {
        keyHash = 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311;
        fee = 0.1 ether;
    }

    function getRandomNumber() public returns (bytes32 requestId) {
        require(LINK.balanceOf(address(this)) >= fee, "Not enough LINK - fill contract with faucet");
        return requestRandomness(keyHash, fee);
    }

    function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
        randomResult = randomness;
    }
}
Enter fullscreen mode Exit fullscreen mode

Documentación oficial

Gracias por ver este tutorial!

Sígueme en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .