import cobo_waas2
from cobo_waas2.models.create_transfer_transaction201_response import (
CreateTransferTransaction201Response,
)
from cobo_waas2.models.message_sign_params import MessageSignParams
from cobo_waas2.rest import ApiException
from pprint import pprint
# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
# Replace `<YOUR_PRIVATE_KEY>` with your private key
api_private_key="<YOUR_PRIVATE_KEY>",
# Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = cobo_waas2.TransactionsApi(api_client)
message_sign_params = cobo_waas2.MessageSignParams(
request_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
chain_id="ETH",
source=cobo_waas2.MessageSignSource(
cobo_waas2.MpcMessageSignSource(
source_type="Org-Controlled",
wallet_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
address="19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
)
),
destination=cobo_waas2.MessageSignDestination(
cobo_waas2.EvmEIP191MessageSignDestination(
destination_type="EVM_EIP_191_Signature", message="YWFhYQ=="
)
),
)
try:
# Sign message
api_response = api_instance.create_message_sign_transaction(
message_sign_params=message_sign_params
)
print("The response of TransactionsApi->create_message_sign_transaction:\n")
pprint(api_response)
except Exception as e:
print(
"Exception when calling TransactionsApi->create_message_sign_transaction: %s\n"
% e
)
// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.TransactionsApi;
import com.cobo.waas2.model.*;
import java.util.UUID;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Select the development environment. To use the production environment, replace `Env.DEV` with
// `Env.PROD
defaultClient.setEnv(Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
TransactionsApi apiInstance = new TransactionsApi();
MessageSignParams messageSignParams =
new MessageSignParams()
.requestId("f47ac10b-58cc-4372-a567-0e02b2c3d479")
.chainId("ETH")
.source(
new MessageSignSource(
new MpcMessageSignSource()
.sourceType(MessageSignSourceType.ORG_CONTROLLED)
.walletId(UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479"))
.address("19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")))
.destination(
new MessageSignDestination(
new EvmEIP191MessageSignDestination()
.destinationType(MessageSignDestinationType.EVM_EIP_191_SIGNATURE)
.message("YWFhYQ==")));
try {
CreateTransferTransaction201Response result =
apiInstance.createMessageSignTransaction(messageSignParams);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling TransactionsApi#createMessageSignTransaction");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
package main
import (
"context"
"fmt"
coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
"os"
)
func main() {
messageSignParams := *coboWaas2.NewMessageSignParams("f47ac10b-58cc-4372-a567-0e02b2c3d479", "ETH", coboWaas2.MessageSignSource{CustodialWeb3MessageSignSource: coboWaas2.NewCustodialWeb3MessageSignSource(coboWaas2.MessageSignSourceType("Web3"), "f47ac10b-58cc-4372-a567-0e02b2c3d479", "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")}, coboWaas2.MessageSignDestination{BTCBIP137MessageSignDestination: coboWaas2.NewBTCBIP137MessageSignDestination(coboWaas2.MessageSignDestinationType("EVM_EIP_191_Signature"), "MessageBip137_example")})
configuration := coboWaas2.NewConfiguration()
// Initialize the API client
apiClient := coboWaas2.NewAPIClient(configuration)
ctx := context.Background()
// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
// Replace `<YOUR_PRIVATE_KEY>` with your private key
ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
Secret: "<YOUR_PRIVATE_KEY>",
})
resp, r, err := apiClient.TransactionsAPI.CreateMessageSignTransaction(ctx).
MessageSignParams(messageSignParams).
Execute()
if err != nil {
fmt.Fprintf(
os.Stderr,
"Error when calling `TransactionsAPI.CreateMessageSignTransaction``: %v\n",
err,
)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
// response from `CreateMessageSignTransaction`: CreateTransferTransaction201Response
fmt.Fprintf(
os.Stdout,
"Response from `TransactionsAPI.CreateMessageSignTransaction`: %v\n",
resp,
)
}
const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.TransactionsApi();
const opts = {
MessageSignParams: CoboWaas2.MessageSignParams.constructFromObject({
request_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
chain_id: "ETH",
source: {
source_type: "Org-Controlled",
wallet_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
address: "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
},
destination: {
destination_type: "EVM_EIP_191_Signature",
message: "YWFhYQ==",
},
}),
};
apiInstance.createMessageSignTransaction(opts).then(
(data) => {
console.log("API called successfully. Returned data: " + data);
},
(error) => {
console.error(error);
},
);
{
"request_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transaction_id": "c986cb3b-1301-412f-9450-13a52c43a95f",
"status": "Submitted"
}{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}Sign message
This operation creates a transaction to sign the provided message using cryptographic techniques.
In some scenarios, you want to sign a message for identity authentication or transaction approval. You need to provide details such as the source address, destination address, and the message to be signed. A transaction request for tracking is returned upon successful operation.
You can get the signature result by calling Get transaction information.
This operation only supports message signing transactions from the following wallets and chains:
- MPC Wallets: BTC, EVM-compatible chains, and Cosmos.
- Custodial Wallets (Web3 Wallets): EVM-compatible chains.
import cobo_waas2
from cobo_waas2.models.create_transfer_transaction201_response import (
CreateTransferTransaction201Response,
)
from cobo_waas2.models.message_sign_params import MessageSignParams
from cobo_waas2.rest import ApiException
from pprint import pprint
# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
# Replace `<YOUR_PRIVATE_KEY>` with your private key
api_private_key="<YOUR_PRIVATE_KEY>",
# Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = cobo_waas2.TransactionsApi(api_client)
message_sign_params = cobo_waas2.MessageSignParams(
request_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
chain_id="ETH",
source=cobo_waas2.MessageSignSource(
cobo_waas2.MpcMessageSignSource(
source_type="Org-Controlled",
wallet_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
address="19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
)
),
destination=cobo_waas2.MessageSignDestination(
cobo_waas2.EvmEIP191MessageSignDestination(
destination_type="EVM_EIP_191_Signature", message="YWFhYQ=="
)
),
)
try:
# Sign message
api_response = api_instance.create_message_sign_transaction(
message_sign_params=message_sign_params
)
print("The response of TransactionsApi->create_message_sign_transaction:\n")
pprint(api_response)
except Exception as e:
print(
"Exception when calling TransactionsApi->create_message_sign_transaction: %s\n"
% e
)
// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.TransactionsApi;
import com.cobo.waas2.model.*;
import java.util.UUID;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Select the development environment. To use the production environment, replace `Env.DEV` with
// `Env.PROD
defaultClient.setEnv(Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
TransactionsApi apiInstance = new TransactionsApi();
MessageSignParams messageSignParams =
new MessageSignParams()
.requestId("f47ac10b-58cc-4372-a567-0e02b2c3d479")
.chainId("ETH")
.source(
new MessageSignSource(
new MpcMessageSignSource()
.sourceType(MessageSignSourceType.ORG_CONTROLLED)
.walletId(UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479"))
.address("19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")))
.destination(
new MessageSignDestination(
new EvmEIP191MessageSignDestination()
.destinationType(MessageSignDestinationType.EVM_EIP_191_SIGNATURE)
.message("YWFhYQ==")));
try {
CreateTransferTransaction201Response result =
apiInstance.createMessageSignTransaction(messageSignParams);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling TransactionsApi#createMessageSignTransaction");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
package main
import (
"context"
"fmt"
coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
"os"
)
func main() {
messageSignParams := *coboWaas2.NewMessageSignParams("f47ac10b-58cc-4372-a567-0e02b2c3d479", "ETH", coboWaas2.MessageSignSource{CustodialWeb3MessageSignSource: coboWaas2.NewCustodialWeb3MessageSignSource(coboWaas2.MessageSignSourceType("Web3"), "f47ac10b-58cc-4372-a567-0e02b2c3d479", "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")}, coboWaas2.MessageSignDestination{BTCBIP137MessageSignDestination: coboWaas2.NewBTCBIP137MessageSignDestination(coboWaas2.MessageSignDestinationType("EVM_EIP_191_Signature"), "MessageBip137_example")})
configuration := coboWaas2.NewConfiguration()
// Initialize the API client
apiClient := coboWaas2.NewAPIClient(configuration)
ctx := context.Background()
// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
// Replace `<YOUR_PRIVATE_KEY>` with your private key
ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
Secret: "<YOUR_PRIVATE_KEY>",
})
resp, r, err := apiClient.TransactionsAPI.CreateMessageSignTransaction(ctx).
MessageSignParams(messageSignParams).
Execute()
if err != nil {
fmt.Fprintf(
os.Stderr,
"Error when calling `TransactionsAPI.CreateMessageSignTransaction``: %v\n",
err,
)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
// response from `CreateMessageSignTransaction`: CreateTransferTransaction201Response
fmt.Fprintf(
os.Stdout,
"Response from `TransactionsAPI.CreateMessageSignTransaction`: %v\n",
resp,
)
}
const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.TransactionsApi();
const opts = {
MessageSignParams: CoboWaas2.MessageSignParams.constructFromObject({
request_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
chain_id: "ETH",
source: {
source_type: "Org-Controlled",
wallet_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
address: "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
},
destination: {
destination_type: "EVM_EIP_191_Signature",
message: "YWFhYQ==",
},
}),
};
apiInstance.createMessageSignTransaction(opts).then(
(data) => {
console.log("API called successfully. Returned data: " + data);
},
(error) => {
console.error(error);
},
);
{
"request_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transaction_id": "c986cb3b-1301-412f-9450-13a52c43a95f",
"status": "Submitted"
}{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}{
"error_code": 123,
"error_message": "<string>",
"error_id": "0b6ddf19083c4bd1a9ca01bec44b24dd"
}import cobo_waas2
from cobo_waas2.models.create_transfer_transaction201_response import (
CreateTransferTransaction201Response,
)
from cobo_waas2.models.message_sign_params import MessageSignParams
from cobo_waas2.rest import ApiException
from pprint import pprint
# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
# Replace `<YOUR_PRIVATE_KEY>` with your private key
api_private_key="<YOUR_PRIVATE_KEY>",
# Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = cobo_waas2.TransactionsApi(api_client)
message_sign_params = cobo_waas2.MessageSignParams(
request_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
chain_id="ETH",
source=cobo_waas2.MessageSignSource(
cobo_waas2.MpcMessageSignSource(
source_type="Org-Controlled",
wallet_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
address="19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
)
),
destination=cobo_waas2.MessageSignDestination(
cobo_waas2.EvmEIP191MessageSignDestination(
destination_type="EVM_EIP_191_Signature", message="YWFhYQ=="
)
),
)
try:
# Sign message
api_response = api_instance.create_message_sign_transaction(
message_sign_params=message_sign_params
)
print("The response of TransactionsApi->create_message_sign_transaction:\n")
pprint(api_response)
except Exception as e:
print(
"Exception when calling TransactionsApi->create_message_sign_transaction: %s\n"
% e
)
// Import classes:
import com.cobo.waas2.ApiClient;
import com.cobo.waas2.ApiException;
import com.cobo.waas2.Configuration;
import com.cobo.waas2.Env;
import com.cobo.waas2.api.TransactionsApi;
import com.cobo.waas2.model.*;
import java.util.UUID;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Select the development environment. To use the production environment, replace `Env.DEV` with
// `Env.PROD
defaultClient.setEnv(Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
TransactionsApi apiInstance = new TransactionsApi();
MessageSignParams messageSignParams =
new MessageSignParams()
.requestId("f47ac10b-58cc-4372-a567-0e02b2c3d479")
.chainId("ETH")
.source(
new MessageSignSource(
new MpcMessageSignSource()
.sourceType(MessageSignSourceType.ORG_CONTROLLED)
.walletId(UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479"))
.address("19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")))
.destination(
new MessageSignDestination(
new EvmEIP191MessageSignDestination()
.destinationType(MessageSignDestinationType.EVM_EIP_191_SIGNATURE)
.message("YWFhYQ==")));
try {
CreateTransferTransaction201Response result =
apiInstance.createMessageSignTransaction(messageSignParams);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling TransactionsApi#createMessageSignTransaction");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
package main
import (
"context"
"fmt"
coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
"os"
)
func main() {
messageSignParams := *coboWaas2.NewMessageSignParams("f47ac10b-58cc-4372-a567-0e02b2c3d479", "ETH", coboWaas2.MessageSignSource{CustodialWeb3MessageSignSource: coboWaas2.NewCustodialWeb3MessageSignSource(coboWaas2.MessageSignSourceType("Web3"), "f47ac10b-58cc-4372-a567-0e02b2c3d479", "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku")}, coboWaas2.MessageSignDestination{BTCBIP137MessageSignDestination: coboWaas2.NewBTCBIP137MessageSignDestination(coboWaas2.MessageSignDestinationType("EVM_EIP_191_Signature"), "MessageBip137_example")})
configuration := coboWaas2.NewConfiguration()
// Initialize the API client
apiClient := coboWaas2.NewAPIClient(configuration)
ctx := context.Background()
// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
// Replace `<YOUR_PRIVATE_KEY>` with your private key
ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
Secret: "<YOUR_PRIVATE_KEY>",
})
resp, r, err := apiClient.TransactionsAPI.CreateMessageSignTransaction(ctx).
MessageSignParams(messageSignParams).
Execute()
if err != nil {
fmt.Fprintf(
os.Stderr,
"Error when calling `TransactionsAPI.CreateMessageSignTransaction``: %v\n",
err,
)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
// response from `CreateMessageSignTransaction`: CreateTransferTransaction201Response
fmt.Fprintf(
os.Stdout,
"Response from `TransactionsAPI.CreateMessageSignTransaction`: %v\n",
resp,
)
}
const CoboWaas2 = require("@cobo/cobo-waas2");
// Initialize the API client
const apiClient = CoboWaas2.ApiClient.instance;
// Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
apiClient.setEnv(CoboWaas2.Env.DEV);
// Replace `<YOUR_PRIVATE_KEY>` with your private key
apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
// Call the API
const apiInstance = new CoboWaas2.TransactionsApi();
const opts = {
MessageSignParams: CoboWaas2.MessageSignParams.constructFromObject({
request_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
chain_id: "ETH",
source: {
source_type: "Org-Controlled",
wallet_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
address: "19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
},
destination: {
destination_type: "EVM_EIP_191_Signature",
message: "YWFhYQ==",
},
}),
};
apiInstance.createMessageSignTransaction(opts).then(
(data) => {
console.log("API called successfully. Returned data: " + data);
},
(error) => {
console.error(error);
},
);
Authorizations
The API key. For more details, refer to API key.
In the API playground, enter your API secret, and your API key will be accordingly calculated.
Body
The request body to create a message signing transaction
The information about a transaction that signs a message. You can provide the message either as raw data or as structured data.
The request ID that is used to track a transaction request. The request ID is provided by you and must be unique within your organization.
"f47ac10b-58cc-4372-a567-0e02b2c3d479"
The chain ID, which is the unique identifier of a blockchain. You can retrieve the IDs of all the chains you can use by calling List enabled chains.
"ETH"
- Org-Controlled/User-Controlled
- Web3
Show child attributes
Show child attributes
The information about the destination EVM_EIP_191_Signature. Refer to Transaction sources and destinations for a detailed introduction about the supported sources and destinations for each transaction type.
- EVM_EIP_191_Signature
- EVM_EIP_712_Signature
- BTC_BIP_137_Signature
- BTC_BIP_322_Signature
- COSMOS_ADR_36_Signature
Show child attributes
Show child attributes
The description of the message signing transaction.
"Transaction to sign a message initiated from a wallet"
The custom category for you to identify your transactions.
Response
The request was successful.
The request ID that is used to track a transaction request. The request ID is provided by you and must be unique within your organization.
"f47ac10b-58cc-4372-a567-0e02b2c3d479"
The transaction ID.
"c986cb3b-1301-412f-9450-13a52c43a95f"
The transaction status. For more details including sub-statuses, please refer to Transaction statuses and sub-statuses.
The PendingAuthorization status covers both manual approval steps and internal automated risk-control, KYT, and compliance screening checks. A transaction in this status does not necessarily require a human to take action.
Submitted, PendingScreening, PendingAuthorization, PendingSignature, Broadcasting, Confirming, Completed, Failed, Rejected, Pending "Submitted"
Was this page helpful?
