Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[api] Many-outputs tx #23

Open
olemis opened this issue Feb 24, 2019 · 0 comments
Open

[api] Many-outputs tx #23

olemis opened this issue Feb 24, 2019 · 0 comments
Assignees

Comments

@olemis
Copy link
Contributor

olemis commented Feb 24, 2019

[POST] /api/transactions/many-outputs

Should build not signed transaction with many outputs. If the transaction with the specified operationId has already been built by one of the [POST] /api/transactions/* call, it should be ignored and regular response (as in the first request) should be returned. Fee should be added to the specified amount.

Request

{
 // Operation ID
“operationId”: “guid”,
    // Source address
    “fromAddress”: “string”,
    // Destinations
    “outputs”: [
        {
            // Destination address
            “toAddress”: “string”,
// Amount to transfer to the  toAddress .
// Integer as string, aligned
// to the asset accuracy. Actual value can be
// calculated as
// x = amount / (10 ^ asset.Accuracy)
“amount”: “string”
} ],
    // Asset ID to transfer, defaults to SKY
   “assetId”: “string”
}

Response:

{
// Error code.
// Can be empty.
// Should be non empty if an error that match one of the
// listed code is occured. For other errors use HTTP
// status codes.
// enum values:
// -  amountIsTooSmall : amount is too small to execute
// transaction
// -  notEnoughBalance : transaction can’t be executed due
// to balance insufficiency on the source address.
   "errorCode": "enum",
// The transaction context in the blockchain
// specific format, which will be passed to the
// [POST] /api/sign.
// Should be not empty when result is successful.
“transactionContext”: “string”
}

Python implementation

@api.route('/api/transactions/many-outputs', methods=['POST'])
def transactions_many_outputs():
    if not request.json:
        return make_response(jsonify(build_error("Input format error")), 400)
    params = {'operationId', 'fromAddress', 'fromAddressContext', 'outputs', 'assetId'}
    if all(x not in params for x in request.json):
        return make_response(jsonify(build_error("Input data error")), 400)
    tx = add_many_outputs_tx(request.json)
    if tx:
        result = transaction_many_outputs(request.json)
        if "transactionContext" in result:
            return jsonify(result)
        if app.config['DEBUG']:
            logging.debug("Transaction: %s", request.args.get('operationId'))
    return jsonify({"status": 500, "error": "Invalid response"})
e1Ru1o added a commit to uhsimelo/skyxcommons that referenced this issue Feb 26, 2019
This was referenced Feb 26, 2019
e1Ru1o added a commit to uhsimelo/skyxcommons that referenced this issue Feb 28, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants