def add_asset_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .addAssetQuantity('coin#test', '5000.99') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def transfer_asset_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .transferAsset(alice['id'], bob['id'], 'coin#test', 'transfer to Bob', '60.00') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def grant_can_remove_my_signatory_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .grantPermission(bob['id'], iroha.Grantable_kRemoveMySignatory) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def set_account_detail_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .setAccountDetail(admin['id'], 'fav_color', 'red') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def set_quorum_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(bob['id']) \ .setAccountQuorum(alice['id'], 2) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(bob['key']).finish()
def remove_signatory_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .removeSignatory(alice['id'], alice['key'].publicKey()) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def revoke_can_set_my_account_detail_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .revokePermission(bob['id'], iroha.Grantable_kSetMyAccountDetail) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def detach_role_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .detachRole(admin['id'], 'test_role') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def create_account_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .createAccount('bob', 'test', bob['key'].publicKey()) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def create_asset_tx(): tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .createAsset('coin', 'test', 2) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def add_signatory_tx(): extra_key = iroha.ModelCrypto().generateKeypair() tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .addSignatory(alice['id'], extra_key.publicKey()) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def create_domain_tx(): # 'test_role' was created in genesis transaction tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .createDomain('another-domain', 'test_role') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def add_peer_tx(): peer_key = iroha.ModelCrypto().generateKeypair() tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .addPeer('192.168.10.10:50541', peer_key.publicKey()) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def set_quorum_tx(): # Quourum cannot be greater than amount of keys linked to an account tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .setAccountQuorum(alice['id'], 2) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def alice_action_2_tx(): global alice_tx2_hash_blob tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .addAssetQuantity('coin#first', '600.30') \ .build() alice_tx2_hash_blob = tx.hash().blob() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def alice_action_1_tx(): global alice_tx1_hash tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .createAsset('coin', 'first', 2) \ .build() alice_tx1_hash = tx.hash() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def grant_can_remove_my_signatory_tx(): extra_key = iroha.ModelCrypto().generateKeypair() tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .grantPermission(bob['id'], iroha.Grantable_kRemoveMySignatory) \ .addSignatory(alice['id'], extra_key.publicKey()) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def admin_action_2_tx(): global admin_tx2_hash_blob tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(admin['id']) \ .setAccountDetail(admin['id'], 'hyperledger', 'iroha') \ .build() admin_tx2_hash_blob = tx.hash().blob() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(admin['key']).finish()
def append_role_tx(): # Note that you can append only that role that has # lesser or the same set of permissions as transaction creator. tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .appendRole(bob['id'], 'second_role') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def create_role_tx(): # You can pick only those permissions that # already belong to account of transaction creator. role_permissions = iroha.RolePermissionSet([iroha.Role_kCreateDomain]) tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(alice['id']) \ .createRole('newrole', role_permissions) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(alice['key']).finish()
def genesis_tx(): test_permissions = iroha.RolePermissionSet([iroha.Role_kGetMyAccount]) tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(admin['id']) \ .addPeer('0.0.0.0:50541', admin['key'].publicKey()) \ .createRole('admin_role', commons.all_permissions()) \ .createRole('test_role', test_permissions) \ .createDomain('test', 'test_role') \ .createAccount('admin', 'test', admin['key'].publicKey()) \ .createAccount('alice', 'test', alice['key'].publicKey()) \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(admin['key']).finish()
def send_tx(tx, key_pair): tx_blob = iroha.ModelProtoTransaction(tx).signAndAddSignature(key_pair).finish().blob() proto_tx = transaction_pb2.Transaction() if sys.version_info[0] == 2: tmp = ''.join(map(chr, tx_blob)) else: tmp = bytes(tx_blob) proto_tx.ParseFromString(tmp) channel = grpc.insecure_channel('127.0.0.1:50051') stub = endpoint_pb2_grpc.CommandService_v1Stub(channel) stub.Torii(proto_tx)
def genesis_tx(): test_permissions = iroha.RolePermissionSet([iroha.Role_kGetDomainAccAstTxs]) tx = iroha.ModelTransactionBuilder() \ .createdTime(commons.now()) \ .creatorAccountId(admin['id']) \ .addPeer('0.0.0.0:50541', admin['key'].publicKey()) \ .createRole('admin_role', commons.all_permissions()) \ .createRole('test_role', test_permissions) \ .createDomain('test', 'test_role') \ .createAccount('admin', 'test', admin['key'].publicKey()) \ .createAccount('alice', 'test', alice['key'].publicKey()) \ .createAsset('coin', 'test', 2) \ .addAssetQuantity('coin#test', '500.69') \ .transferAsset(admin['id'], alice['id'], 'coin#test', 'top up', '10.00') \ .build() return iroha.ModelProtoTransaction(tx) \ .signAndAddSignature(admin['key']).finish()
import sys sys.path.insert(0, 'build/shared_model/bindings') import iroha import block_pb2 import endpoint_pb2 import endpoint_pb2_grpc import queries_pb2 import grpc import time tx_builder = iroha.ModelTransactionBuilder() query_builder = iroha.ModelQueryBuilder() crypto = iroha.ModelCrypto() proto_tx_helper = iroha.ModelProtoTransaction() proto_query_helper = iroha.ModelProtoQuery() admin_priv = open("../[email protected]", "r").read() admin_pub = open("../[email protected]", "r").read() key_pair = crypto.convertFromExisting(admin_pub, admin_priv) current_time = int(round(time.time() * 1000)) - 10**5 creator = "admin@test" def get_status(tx): # Create status request print("Hash of the transaction: ", tx.hash().hex()) tx_hash = tx.hash().blob()
def proto(self, tx): return iroha.ModelProtoTransaction(tx).signAndAddSignature(self.keys).finish()