{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Sign message by Ethereum address"
]
},
{
"cell_type": "code",
"execution_count": 1,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Ethereum address 0x748097fc1a3c8ea7ab83bc4e6eeebb5ff783a2e7\n",
"private key: 0x3e4f18c8d4e2f34c281485ccd4d8b1941ab4f21d0db5ae139f59d15d6bcffa09\n",
"\n",
"Bostrom address: bostrom1phsqglvjxm4n3463yarzf6qma4wpqg4h6ms3h9\n",
"Cosmos address: cosmos1phsqglvjxm4n3463yarzf6qma4wpqg4hegyzfz\n",
"seed: 'wrestle slide please stuff oil odor estate original wrestle toilet valve rebel tunnel basket scheme myself margin fly pyramid fox when whip height evoke'\n",
"\n",
"message: {\"nickname\": \"john\", \"avatar_cid\": \"QmNqdEgYJwe8QSZvcpBXqcNoG9BRoSf71q6mJLe3aRhZAW\", \"gift_claiming_address_type\": \"ethereum\", \"gift_claiming_address\": \"0x748097fC1a3c8ea7aB83BC4e6eeebB5fF783A2e7\", \"target_address\": \"bostrom1phsqglvjxm4n3463yarzf6qma4wpqg4h6ms3h9\", \"relay_reward\": \"0.01\"}\n",
"\n",
"message signature: 0x7574df94fa11eb9b097149c34e161a38220d4ca231a00ffa884a7d6de474301f7b742e674f5e21ac3f287f0500b2a20298f854a5698c41bcd0d5fc4b73173e5f1b\n",
"\n",
"\n",
"Ethereum address 0x7fc49137179a320e6064b2a3079dc49995739248\n",
"private key: 0xa11d6dec785574e9f8f9eb06227802515b268d34e248797d4064173bdba2a588\n",
"\n",
"Bostrom address: bostrom1g7aaxxmnzg3yh0j4qnj5ws5tshw2nkg97zt30z\n",
"Cosmos address: cosmos1g7aaxxmnzg3yh0j4qnj5ws5tshw2nkg9a3lz39\n",
"seed: 'dawn theory craft comfort tribe day hamster click merge hunt icon foot oval help never myself taste exchange episode pear dutch grass this unit'\n",
"\n",
"message: {\"nickname\": \"john\", \"avatar_cid\": \"QmNqdEgYJwe8QSZvcpBXqcNoG9BRoSf71q6mJLe3aRhZAW\", \"gift_claiming_address_type\": \"ethereum\", \"gift_claiming_address\": \"0x7fC49137179A320e6064b2A3079dC49995739248\", \"target_address\": \"bostrom1g7aaxxmnzg3yh0j4qnj5ws5tshw2nkg97zt30z\", \"relay_reward\": \"0.01\"}\n",
"\n",
"message signature: 0x9c50f1224ad9b61ac415d59f85599415c7ac43f17420e09869e8f05063a850c768931e12adfa8b49580175235eebc084323978d8e1cc7bd701d3938a33658d1d1c\n",
"\n",
"\n",
"Ethereum address 0xa31877153b567e2a9b53cb7287335b65a85840eb\n",
"private key: 0x176f0a2e75102b69b149c89377be69b3f654a76d321c7b9db46d36617878ed68\n",
"\n",
"Bostrom address: bostrom1r3vcguw2378dhmf6sxe0q38dyw350faczs077q\n",
"Cosmos address: cosmos1r3vcguw2378dhmf6sxe0q38dyw350facprmdq8\n",
"seed: 'honey top crouch feed carbon horn plastic wheat ranch torch puzzle toilet limb boat reason okay select utility seed carry velvet wash scrap dolphin'\n",
"\n",
"message: {\"nickname\": \"john\", \"avatar_cid\": \"QmNqdEgYJwe8QSZvcpBXqcNoG9BRoSf71q6mJLe3aRhZAW\", \"gift_claiming_address_type\": \"ethereum\", \"gift_claiming_address\": \"0xa31877153B567E2A9B53CB7287335B65A85840eb\", \"target_address\": \"bostrom1r3vcguw2378dhmf6sxe0q38dyw350faczs077q\", \"relay_reward\": \"0.01\"}\n",
"\n",
"message signature: 0x0d75fc2d71a988a3115cc3bd50c2a58f524d0a34d5f6153d4283854448e7ca2d59abcdf70f34ea8017e6146503f8211bbb1b911da102241921d0c43c3a7591371b\n"
]
}
],
"source": [
"from web3.auto import w3\n",
"from cyberpy import generate_wallet, address_to_address\n",
"from eth_account.messages import encode_defunct\n",
"import json\n",
"for _ in range(3):\n",
" # Generate Ethereum wallet\n",
" ethereum_wallet = w3.eth.account.create('KEY PHRASE')\n",
" print(f'\\n\\nEthereum address {ethereum_wallet.address.lower()}\\nprivate key: {ethereum_wallet.privateKey.hex()}')\n",
"\n",
" # Generate Bostrom and Cosmos wallet\n",
" bostrom_wallet = generate_wallet()\n",
" bostrom_wallet['cosmos_address'] = address_to_address(bostrom_wallet['address'], 'cosmos')\n",
" print(f\"\\nBostrom address: {bostrom_wallet['address']}\\nCosmos address: {bostrom_wallet['cosmos_address']}\\nseed: '{bostrom_wallet['seed']}'\")\n",
"\n",
" # Create message\n",
" message_json = {\n",
" \"nickname\": \"john\",\n",
" \"avatar_cid\": \"QmNqdEgYJwe8QSZvcpBXqcNoG9BRoSf71q6mJLe3aRhZAW\",\n",
" \"gift_claiming_address_type\": \"ethereum\",\n",
" \"gift_claiming_address\": ethereum_wallet.address,\n",
" \"target_address\": bostrom_wallet['address'],\n",
" \"relay_reward\": \"0.01\"\n",
" }\n",
" message = json.dumps(message_json)\n",
" print(f'\\nmessage: {message}')\n",
"\n",
" # Sign message form Ethereum address\n",
" signed_message = \\\n",
" w3.eth.account.sign_message(\n",
" signable_message=encode_defunct(text=message),\n",
" private_key=ethereum_wallet.privateKey)\n",
" print(f'\\nmessage signature: {signed_message.signature.hex()}')"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"#### Verify message"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Signer address: 0xa31877153B567E2A9B53CB7287335B65A85840eb\n"
]
}
],
"source": [
"signer_address = \\\n",
" w3.eth.account.recover_message(\n",
" signable_message=encode_defunct(text=message),\n",
" signature=signed_message.signature.hex()\n",
" )\n",
"print(f'Signer address: {signer_address}')"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"### Sign message by Cosmos address\n",
"*TODO: add script for signature generation. You can sign a message only in the Keplr extension now*\n",
"\n",
"\n",
"message:\n",
"```json\n",
"{\"nickname\":\"bob-cosmos\",\"avatar_cid\":\"QmU1Nf2opJGZGNWmqxAa9bb8X6wVSHRBDCY6nbm3RmVXGb\",\"gift_claiming_address_type\":\"cosmos\",\"gift_claiming_address\":\"cosmos1qjjjur5et06eszh82pfv7kvdnu3sur23x00t3g\",\"target_address\":\"bostrom1qjjjur5et06eszh82pfv7kvdnu3sur239umc00\",\"relay_reward\":\"0.01\"}\n",
"```\n",
"signature:\n",
"`CvMkqkQHVPV3DTyVErth16OdTjAwqQD6t+r9ImSpdwUZFin+UPeGSfH9hhuAmqYAp4CffhNNSEisdfzwwvlN/w==`\n",
"\n",
"\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
cw-cyber/contracts/cw-cyber-gift/testdata/generate_test_data/signed_messages.ipynb
ฯ 0.0%