add python example for secure signing

This commit is contained in:
Ryan G. Young
2021-03-28 23:15:07 -07:00
parent 7001b01ff0
commit 701a95ca53
2 changed files with 50 additions and 2 deletions

View File

@@ -0,0 +1,34 @@
from xrpl.core import keypairs
# Define network client
from xrpl.clients import JsonRpcClient
JSON_RPC_URL = "https://s.altnet.rippletest.net:51234/"
client = JsonRpcClient(JSON_RPC_URL)
# Define signer address
from xrpl.wallet import Wallet
test_wallet_1 = Wallet(seed="shrPSF6vV3v3yoND9J3NeKks6M3xd")
print(test_wallet_1.classic_address) # "raaFKKmgf6CRZttTVABeTcsqzRQ51bNR6Q"
# Prepate the tranaaction
from xrpl.ledger import get_latest_validated_ledger_sequence
current_validated_ledger = get_latest_validated_ledger_sequence(client)
min_ledger = current_validated_ledger + 1
max_ledger = min_ledger + 20
from xrpl.models.transactions import Payment
# not working in testing
# from xrpl.utils import xrp_to_drops
my_payment = Payment(
account=test_wallet_1.classic_address,
amount="2200000",
destination="rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe",
sequence=test_wallet_1.next_sequence_num,
)
print("Payment object:", my_payment)
print(f"Can be validated in ledger range: {min_ledger} - {max_ledger}")
# Sign transaction -------------------------------------------------------------
import xrpl.transaction
signed = xrpl.transaction.safe_sign_transaction(my_payment, test_wallet_1)
print("Signed transaction blob:", signed)

View File

@@ -74,14 +74,27 @@ If you use a client library not published by Ripple, make sure it uses proper, s
For best security, be sure to keep your client library updated to the latest stable version. For best security, be sure to keep your client library updated to the latest stable version.
### Example Local Signing with RippleAPI ### Local Signing Example
The following code sample shows how to sign transaction instructions locally with RippleAPI for JavaScript: The following code sample shows how to sign transaction instructions locally with [`ripple-lib`](https://github.com/ripple/ripple-lib) for JavaScript and [`xrpl-py`](https://github.com/XRPLF/xrpl-py) for Python:
<!-- MULTICODE_BLOCK_START -->
*JavaScript*
```js ```js
{% include '_code-samples/secure-signing/js/signPayment.js' %} {% include '_code-samples/secure-signing/js/signPayment.js' %}
``` ```
*Python*
```py
{% include '_code-samples/secure-signing/py/sign-payment.py' %}
```
<!-- MULTICODE_BLOCK_END -->
For greater security, you can load your secret keys from a management tool such as [Vault](https://www.vaultproject.io/). For greater security, you can load your secret keys from a management tool such as [Vault](https://www.vaultproject.io/).
@@ -117,6 +130,7 @@ To use this configuration, follow the steps for [running `rippled` on a private
- [sign method][] - [sign method][]
- [submit method][] - [submit method][]
- [RippleAPI Reference](rippleapi-reference.html) - [RippleAPI Reference](rippleapi-reference.html)
- [xrpl-py Reference](https://xrpl-py.readthedocs.io/en/latest/index.html)