Test Your WAX RNG Contract
To test the smart contract we will make a call to action getrnd with the following parameters:
Parameter | Type | Sample | Description |
---|---|---|---|
customer_id | name | arpegiator21 | Account 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:
Parameter | Type | Description |
---|---|---|
assoc_id | uint64_t | 2949917703587584469 |
signing_value | uint64_t | 2949917703587584469 |
caller | name | Name 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": ""
}