Creating A Smart Contract Deployment Request Through Taurus Protect
Basic Description
This endpoint is used to create a Smart Contract Deployment Request through Taurus-PROTECT.
This endpoint would accept a POST Request with a JSON payload containing the Smart Contract Deployment Request details. The bytecode
, fromAddressId
, constructor
and generateWhitelistedAddress
are the only required parameters that must be included within the JSON payload.
Prerequisites
Required Roles
Certain API endpoints require that the user has a specific role in order to access them. Roles are used to restrict access to certain functionality within the system and ensure that only authorized users are able to perform specific actions.
Here is the list of required Roles for this particular endpoint:
- RequestCreator
- TPUser
To find out more about roles, please refer to the following page in the Taurus User Guides.
Required Input Parameters
Certain API endpoints require specific input parameters. Here is the list of Required Input Parameters for this particular endpoint:
- bytecode: the bytecode of the request, encoded in base64
- fromAddressId : the originating Address that should deploy the Smart Contract and pay the fees
- constructor: the signature and arguments of the constructor call that will be part of the Smart Contract deployment
- generateWhitelistedAddress: the flag to trigger the creation of a whitelisted address upon the Smart Contract deployment
Preconditions
It is important to note that the selected Smart Contract needs to pre-exist.
Call Example
You can find a basic example in cURL below.
Please note that you will need to update the BASEURL
and the APITOKEN
for the command to function.
In this example, Taurus-PROTECT has created a new Smart Contract Deployment Request from Address XXXXXXXXXXXXX and has assigned it a unique ID of 4201467.
export BASEURL=https://taurus-protect-instance.com
export APIToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZXh0ZXJuYWxVc2VySUQiOiJ0ZWFtMUV4dGVybmFsVXNlcklEIiwidGVuYW50SUQiOjEsImNhcGl0YWxUZW5hbnRJRCI6MSwiZmlyc3RuYW1lIjoiSm9obiIsImxhc3RuYW1lIjoiRG9lIiwicm9sZXMiOlsidHB1c2VyIl0sImVtYWlsIjoidGVhbTFAYmFuay5jb20iLCJ1c2VybmFtZSI6InRlYW0xIiwiand0X3JlbmV3YWJsZV9hbW91bnQiOjAsImlzX3RvdHBfZW5hYmxlZCI6ZmFsc2UsImF1dGhfc3RhdHVzIjoiU1VDQ0VTUyIsImxhc3RfbG9naW4iOiIyMDIzLTAxLTAxVDAwOjAwOjAwLjE0OTc0NDIzMloiLCJsb2dnZWRfaW5fd2l0aF9zc28iOmZhbHNlLCJrZXkiOiIiLCJleHAiOjE2ODEyMTkyNzYsImlhdCI6MTY4MTIxNzQ3Nn0.K_85arIrigpkN1yHttCydpeT6oVg2c6PyQnuji907Og
curl --location "$BASEURL/api/rest/v1/requests/outgoing" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $APIToken" \
--data '{
"contract": {
"blockchain": "ETH",
"eth": {
"bytecode": "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",
"constructor": {
"functionSignature": "(address, address, bytes)",
"args": [
{
"name": "_logic",
"type": "address",
"value": {
"primitive": "0xf058890Ca14d76c3328C82996859906e5AFc65c7"
}
},
{
"name": "admin_",
"type": "address",
"value": {
"primitive": "0x141dCC96FcA956B719f64a50D74742B260146aC3"
}
},
{
"name": "_data",
"type": "bytes",
"value": {
"primitive": "4d12d4b60000000000000000000000005f7ec8f98ac6c13ca3354adf612ad08772c2665e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000007d00000000000000000000000000000000000000000000000000000000000000008746f6b656e3435360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009746f6b656e343536530000000000000000000000000000000000000000000000"
}
}
]
}
}
},
"fromAddressId": "338484",
"gasLimit": "5000000",
"generateWhitelistedAddress": true
}'
This piece of code sends a POST request to https://your-protect-instance.example.com/api/rest/v1/requests/outgoing/contracts/deploy with the JSON string in the request body.
Call Result
A successful response for the POST call to create a Smart Contract Deployment Request through Taurus-PROTECT might look like this:
{
"result": {
"id": "4201467",
"tenantId": "12",
"currency": "ETH",
"envelope": [...]
[...]
Taurus-PROTECT responds with a JSON object containing the Request details, including the Deployment Request status
and the newly assigned Request id
.
Requirements for Future Use
For this particular endpoint, we need to store the Requestid
as it will be required in the next step where we will sign the Transaction Request.
You can find the Swagger-generated page for this endpoint in the following link.
Updated 22 days ago