Skip to main content

Test Your WAX RNG Contract

To test the smart contract we will make a call to action getrnd with the following parameters:

ParameterTypeSampleDescription
customer_idnamearpegiator21Account name of the requesting user

Note: To illustrate the case I use the account arpegiator21 but you should use your own account whose key has already been imported to the wallet and with which you can sign transactions.

Call to action

From the command line, use the cleos push action command to call the getrnd action.

cleos -u [chain-api-url] push action mywaxrngtest getrnd '["arpegiator21"]' -p arpegiator21@action

The console prints the following:

executed transaction: 06847ad5e939849a28f03685a6f959d59fac9ab265b7eeb4453157ab2b0c45a8  104 bytes  310 us
# mywaxrngtest <= mywaxrngtest::getrnd {"customer_id":"arpegiator21"}
# orng.wax <= orng.wax::requestrand {"assoc_id":"2949917703587584469","signing_value":"2949917703587584469","caller":"mywaxrngtest"}
warning: transaction executed locally, but may not be confirmed by the network yet ]

In the response we can see how the getrnd action has made an inline call to the requestrand action of the smart contract orng.wax with the following parameters:

ParameterTypeDescription
assoc_iduint64_t2949917703587584469
signing_valueuint64_t2949917703587584469
callernameName of the smart contract containing the callback function that will receive the response.

Although we have taken many precautions to generate a unique seed (signing_value), if it still failed, we would get an error message like this:

Error 3050003: eosio_assert_message assertion failure
Error Details:
assertion failure with message: Signing value already used
pending console output:

Verify The Random Number

The callback function saves your random number to the rngcustomers table. To display the table values, use the cleos get table command.

cleos -u [chain-api-url] get table mywaxrngtest mywaxrngtest rngcustomers

The console prints the following JSON results, including the random_value returned from the WAX RNG service and the finalnumber derived from the random_value:

{
"rows": [{
"signing_value": "2949917703587584469",
"customer_id": "arpegiator21",
"random_value": "b3f4a264cdb0367db071c851b6bbb20b51a391cdb50b314d81f3705c0702c8d4",
"final_number": 85
}
],
"more": false,
"next_key": ""
}