In the cli_wallet you'd basically do this:
locked >>> get_vesting_balances joereform
get_vesting_balances joereform
[{
"id": "1.13.368",
"owner": "1.2.16957",
"balance": {
"amount": 7418124,
"asset_id": "1.3.0"
},
"policy": [
1,{
"vesting_seconds": 7776000,
"start_claim": "1970-01-01T00:00:00",
"coin_seconds_earned": "57683332224000",
"coin_seconds_earned_last_update": "2015-11-23T02:00:00"
}
],
"allowed_withdraw": {
"amount": 7418124,
"asset_id": "1.3.0"
},
"allowed_withdraw_time": "2015-11-23T16:51:06"
}
]
Take note of the id, the owner and the allowed_withdraw amount. Asset_id 1.3.0 is (unsurprisingly) BTS.
Now you need to know what a withdraw_vesting_balance operation looks like.
locked >>> get_prototype_operation vesting_balance_withdraw_operation
get_prototype_operation vesting_balance_withdraw_operation
[
33,{
"fee": {
"amount": 0,
"asset_id": "1.3.0"
},
"vesting_balance": "1.13.0",
"owner": "1.2.0",
"amount": {
"amount": 0,
"asset_id": "1.3.0"
}
}
]
This gives you the numeric operation id 33 and the general structure of the withdraw operation. Open a text editor and fill in the details with the data from your own vesting_balance. It should look like this (but don't paste this into the cli_wallet command line yet):
[
33,{
"fee": {
"amount": 0,
"asset_id": "1.3.0"
},
"vesting_balance": "1.13.368",
"owner": "1.2.16957",
"amount": {
"amount": 7418124,
"asset_id": "1.3.0"
}
}
]
Now you must wrap the operation into a transaction. This is done using the transaction builder. Start a new transaction like this:
locked >>> begin_builder_transaction
begin_builder_transaction
0
Not the 0 at the end - this is the builder id. You'll need this for the next steps.
Now add the withdraw operation from above. You'll have to remove linefeeds before pasting the data into the CLI, I think:
locked >>> add_operation_to_builder_transaction 0 [ 33,{ "fee": { "amount": 0, "asset_id": "1.3.0" }, "vesting_balance": "1.13.368", "owner": "1.2.16957", "amount": { "amount": 7418124, "asset_id": "1.3.0" } } ]
add_operation_to_builder_transaction 0 [ 33,{ "fee": { "amount": 0, "asset_id": "1.3.0" }, "vesting_balance": "1.13.368", "owner": "1.2.16957", "amount": { "amount": 7418124, "asset_id": "1.3.0" } } ]
null
Now have it fill in the correct fee amount:
locked >>> set_fees_on_builder_transaction 0 BTS
set_fees_on_builder_transaction 0 BTS
{
"amount": "100000000000000",
"asset_id": "1.3.0"
}
Again, the 0 is the builder id, not the fee amount. As you can see, the fees for vesting withdrawals are currently ridiculously high. This is to avoid a bug that has triggered chain forks in the past. Once the bug is fixed you'll be able to withdraw for a reasonable fee.
Now, preview the resulting transaction:
locked >>> preview_builder_transaction 0
preview_builder_transaction 0
{
"ref_block_num": 0,
"ref_block_prefix": 0,
"expiration": "1970-01-01T00:00:00",
"operations": [[
33,{
"fee": {
"amount": "100000000000000",
"asset_id": "1.3.0"
},
"vesting_balance": "1.13.368",
"owner": "1.2.16957",
"amount": {
"amount": 7418124,
"asset_id": "1.3.0"
}
}
]
],
"extensions": []
}
Now, if your wallet is unlocked and contains the private keys of your account, you can sign the transaction and broadcast it:
locked >>> sign_builder_transaction 0 true