/* * Copyright IBM Corp. All Rights Reserved. * * SPDX-License-Identifier: Apache-2.0 * */ /* * tranferMarble.js will transfer ownership a specified marble to a new ownder. Example: * * $ node transferMarble.js marble102 jimmy * * The utility is meant to demonstrate update block events. */ 'use strict'; const { Wallets, Gateway } = require('fabric-network'); const fs = require('fs'); const path = require('path'); const config = require('./config.json'); const channelid = config.channelid; async function main() { if (process.argv[2] == undefined && process.argv[3] == undefined) { console.log("Usage: node changeMarbleOwner.js marbleId owner"); process.exit(1); } const updatekey = process.argv[2]; const newowner = process.argv[3]; try { // Parse the connection profile. This would be the path to the file downloaded // from the IBM Blockchain Platform operational console. const ccpPath = path.resolve(__dirname, '..', 'test-network','organizations','peerOrganizations','org1.example.com', 'connection-org1.json'); const ccp = JSON.parse(fs.readFileSync(ccpPath, 'utf8')); // Configure a wallet. This wallet must already be primed with an identity that // the application can use to interact with the peer node. const walletPath = path.resolve(__dirname, 'wallet'); const wallet = await Wallets.newFileSystemWallet(walletPath); // Create a new gateway, and connect to the gateway peer node(s). The identity // specified must already exist in the specified wallet. const gateway = new Gateway(); await gateway.connect(ccp, { wallet, identity: 'appUser', discovery: { enabled: true, asLocalhost: true } }); // Get the network channel that the smart contract is deployed to. const network = await gateway.getNetwork(channelid); // Get the smart contract from the network channel. const contract = network.getContract('marbles'); await contract.submitTransaction('transferMarble', updatekey, newowner); console.log("Transferred marble " + updatekey + " to " + newowner); await gateway.disconnect(); } catch (error) { console.error(`Failed to submit transaction: ${error}`); process.exit(1); } } main();