OSDN Git Service

add get_gm_address
authorChengcheng Zhang <943420582@qq.com>
Fri, 15 Feb 2019 07:17:08 +0000 (15:17 +0800)
committerChengcheng Zhang <943420582@qq.com>
Fri, 15 Feb 2019 07:17:08 +0000 (15:17 +0800)
app/api/__init__.py
app/api/resources.py
app/model/receiver.py

index 60171b3..19e5dc9 100644 (file)
@@ -32,6 +32,7 @@ from app.api.resources import Get_Gm_Child_Xpub
 from app.api.resources import Gm_Xpub_Verify
 from app.api.resources import Gm_Xprv_Sign
 from app.api.resources import Get_Gm_P2WPKH_Program
+from app.api.resources import Get_Gm_Address
 
 
 blueprint = Blueprint('api', __name__, url_prefix='/api/v1')
@@ -67,4 +68,5 @@ api.add_resource(Get_Gm_Child_Xprv, '/get_gm_child_xprv')
 api.add_resource(Get_Gm_Child_Xpub, '/get_gm_child_xpub')
 api.add_resource(Gm_Xpub_Verify, '/gm_xpub_verify')
 api.add_resource(Gm_Xprv_Sign, '/gm_xprv_sign')
-api.add_resource(Get_Gm_P2WPKH_Program, '/get_gm_P2WPKH_program')
\ No newline at end of file
+api.add_resource(Get_Gm_P2WPKH_Program, '/get_gm_P2WPKH_program')
+api.add_resource(Get_Gm_Address, '/get_gm_address')
\ No newline at end of file
index 2a0f531..e10b847 100644 (file)
@@ -32,6 +32,7 @@ from app.model.key_gm import get_gm_child_xpub
 from app.model.key_gm import gm_xpub_verify
 from app.model.key_gm import gm_xprv_sign
 from app.model.receiver import get_gm_P2WPKH_program
+from app.model.receiver import get_gm_address
 
 
 parser = reqparse.RequestParser()
@@ -322,3 +323,12 @@ class Get_Gm_P2WPKH_Program(Resource):
         xpub = args.get('xpub_str')
         control_program = get_gm_P2WPKH_program(account_index, address_index, change, xpub)
         return control_program
+
+class Get_Gm_Address(Resource):
+
+    def post(self):
+        args = parser.parse_args()
+        control_program = args.get('control_program_str')
+        network = args.get('network_str')
+        address = get_gm_address(control_program, network)
+        return address
index 18b22e9..21be70c 100644 (file)
@@ -180,6 +180,38 @@ def create_address(control_program_str, network_str):
         "address": address_str
     }
 
+
+# get_gm_address create address
+# You can get more test data from: https://gist.github.com/zcc0721/58ff3b33c54616c289dd0b14f75d316c
+# Please attention:
+#   network_str: gm_testnet/gm_solonet
+# test data 1:
+#   control_program_str: 0014d234314ea1533dee584417ecb922f904b8dd6c6b
+#   network_str: gm_testnet
+#   address_str: gm1q6g6rzn4p2v77ukzyzlktjgheqjud6mrtj2c2ef
+# test data 2:
+#   control_program_str: 0014d234314ea1533dee584417ecb922f904b8dd6c6b
+#   network_str: gm_solonet
+#   address_str: sm1q6g6rzn4p2v77ukzyzlktjgheqjud6mrtm7srev
+# test data 3:
+#   control_program_str: 0014eefb8d0688d7960dfbd79bb3aa1bcaa3ec34415d
+#   network_str: gm_testnet
+#   address_str: gm1qamac6p5g67tqm77hnwe65x7250krgs2ay6dmr3
+# test data 4:
+#   control_program_str: 0014eefb8d0688d7960dfbd79bb3aa1bcaa3ec34415d
+#   network_str: gm_solonet
+#   address_str: sm1qamac6p5g67tqm77hnwe65x7250krgs2adw9jr5
+def get_gm_address(control_program_str, network_str):
+    public_key_hash_str = control_program_str[4:]
+    if network_str == 'gm_testnet':
+        hrp = 'gm'
+    else:
+        hrp = 'sm'
+    address_str = segwit_addr.encode(hrp, 0, bytes.fromhex(public_key_hash_str))
+    return {
+        "address": address_str
+    }
+
 # create_qrcode_base64 create qrcode, then encode it to base64
 # type(s) is str
 def create_qrcode_base64(s):