xoroshiro-cairo

A xoroshiro128** pseudorandom number generator implementation in Cairo.

Deploying

Presuming you have nile installed, you can compile and deploy the contract. You’ll need a single number (a seed) that’s passed in as an input argument to the constructor:

nile compile
nile deploy --network goerli xoroshiro128_starstar 161803398

An instance of this contract has been deployed at 0x06c4cab9afab0ce564c45e85fe9a7aa7e655a7e0fd53b7aea732814f3a64fbee, you can use it as well.

Usage

You can probe the deployed contract on Goerli for a random number inside your Starknet contract:

%lang starknet

const XOROSHIRO_ADDR = 0x06c4cab9afab0ce564c45e85fe9a7aa7e655a7e0fd53b7aea732814f3a64fbee

@contract_interface
namespace IXoroshiro:
    func next() -> (rnd : felt):
    end
end

@external
func get_next_rnd{syscall_ptr : felt*, range_check_ptr}() -> (rnd : felt):
    let (rnd) = IXoroshiro.next(contract_address=XOROSHIRO_ADDR)
    return (rnd)
end

The contract has not been audited, use it at your own discresion.

GitHub

View Github