MCPcopy Create free account
hub / github.com/QuipNetwork/cpp-sdk / handleExecute

Method handleExecute

src/cli.cpp:477–633  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

475}
476
477bool CLI::handleExecute(const std::vector<std::string> &args) {
478 if (args.size() != 5) {
479 std::cerr << "Usage: execute <quantum_secret_hex> <quip_wallet_address> "
480 "<target_address> <opdata> <eth_value>"
481 << std::endl;
482 std::cerr << " quantum_secret_hex: 32-byte quantum secret in hex format (0x...)"
483 << std::endl;
484 std::cerr << " quip_wallet_address: QuipWallet address (0x...)"
485 << std::endl;
486 std::cerr << " target_address: Target contract address (0x...)"
487 << std::endl;
488 std::cerr << " opdata: Operation data in hex format (0x...)"
489 << std::endl;
490 std::cerr << " eth_value: ETH value to send with call (in ETH, e.g. 0.01)"
491 << std::endl;
492 return false;
493 }
494
495 try {
496 // 1. Parse Arguments
497 std::string quantum_secret_hex = args[0];
498 if (quantum_secret_hex.front() == '"' && quantum_secret_hex.back() == '"') {
499 quantum_secret_hex =
500 quantum_secret_hex.substr(1, quantum_secret_hex.size() - 2);
501 }
502 std::array<uint8_t, 32> quantum_secret = fromHex32(quantum_secret_hex);
503
504 std::string quip_wallet_address_str = args[1];
505 if (quip_wallet_address_str.front() == '"' &&
506 quip_wallet_address_str.back() == '"') {
507 quip_wallet_address_str =
508 quip_wallet_address_str.substr(1, quip_wallet_address_str.size() - 2);
509 }
510 quip_wallet_address_str = toChecksumAddress(quip_wallet_address_str);
511 Address quip_wallet_address = parseAddress(quip_wallet_address_str);
512
513 std::string target_address_str = args[2];
514 if (target_address_str.front() == '"' && target_address_str.back() == '"') {
515 target_address_str = target_address_str.substr(1, target_address_str.size() - 2);
516 }
517 target_address_str = toChecksumAddress(target_address_str);
518 Address target_address = parseAddress(target_address_str);
519
520 std::string opdata_str = args[3];
521 if (opdata_str.front() == '"' && opdata_str.back() == '"') {
522 opdata_str = opdata_str.substr(1, opdata_str.size() - 2);
523 }
524 std::vector<uint8_t> opdata = parseOpData(opdata_str);
525
526 std::string eth_value_str = args[4];
527 if (eth_value_str.front() == '"' && eth_value_str.back() == '"') {
528 eth_value_str = eth_value_str.substr(1, eth_value_str.size() - 2);
529 }
530 // Convert ETH to wei (multiply by 10^18)
531 double eth_value = std::stod(eth_value_str);
532 Amount wei_value = static_cast<Amount>(eth_value * 1e18);
533
534 // 2. Find the correct Vault

Callers

nothing calls this directly

Calls 13

fromHex32Function · 0.85
toChecksumAddressFunction · 0.85
deriveClassicalPublicKeyFunction · 0.85
toHexFunction · 0.85
fromHexFunction · 0.85
keccak256Function · 0.85
recoverKeyPairMethod · 0.80
generateKeyPairMethod · 0.80
signMethod · 0.80
getVaultsMethod · 0.45
getPqOwnerMethod · 0.45

Tested by

no test coverage detected