Perl SDK for CircleChain

Install

use cpanm to install perl module Circle::Chain from cpan.org:

cpanm -n Circle::Chain

Usage

User register and login

use Circle::Chain qw(:user :wallet :block);

# 1. first register and login or login with verify code
## option1: register and login
my $response = send_register_verify_code({
  email => 'circle-node@gmail.com'
});
if ($response->{status} != 200) {
  croak 'cannot send register verify code:' . $response->{status};
}
# receive you verify code in email or your mobile phone.
$response = register({
  email => 'circle-node@gmail.com',
  passwordInput1 => '<password>',
  passwordInput2 => '<password>',
  verifyCode => '<verify_code>'
});
if ($response->{status} != 200) {
  croak 'cannot register status' . $response->{status};
}

# 2. then login
$response = login({
  email => 'circle-node@gmail.com',
  password => '<password>'
});
if ($response->{status} != 200) {
  croak 'cannot login status' . $response->{status};
}
## option2: login with verify code without register
$response = send_verify_code({
  email => 'circle-node@gmail.com'
});
if ($response->{status} != 200) {
  croak 'cannot send login verify code:' . $response->{status};
}
# receive you verify code in email or your mobile phone.
# then login
$response = login({
  email => 'circle-node@gmail.com',
  verifyCode => '<verifyCode>'
});
if ($response->{status} != 200) {
  croak 'cannot login status' . $response->{status};
}
## for you login, option1 and option2 are ok, you just select one.
# now your login in.

# 3. set pay password.
$response = send_pay_verify_code({
  email => 'circle-node@gmail.com'
});
if ($response->{status} != 200) {
  croak 'cannot send pay password verify code:' . $response->{status};
}
# receive you payVerifyCode from your email.
$response = set_pay_password({
  account => {
    email => 'circle-node@gmail.com'
  },
  verifyCode => '<verify_code>',
  password => '<password>'
});
if ($response->{status} != 200) {
  croak 'cannot set pay password status:' . $response->{status};
}
# now the pay password is set success.

Wallet functions

# 3. create your wallets, you can create 3 wallets at most.
$response = create_wallet();
if ($response->{status} != 200) {
  croak 'cannot create wallet status:' . $response->{status};
}
# 4. see your wallets info
$response = list_wallet();
if ($response->{status} != 200) {
  croak 'cannot list wallet status:' . $response->{status};
}
# now we get the wallet info.
$response = assets_of_wallet();
if ($response->{status} != 200) {
  croak 'cannot get assets of wallet status:' . $response->{status};
}
# now we get assets of wallet.

# 5. send assets to others
my $uuid = '<uuid>'; # the ownership uuid
$response = send_to({
  from => '<from address>',
  address => '<receive address>',
  transContent => {
    type => 1, # 1 ownership, 2 identity
    uuid => $uuid,
  },
  payPassword => '<pay password>'
});
if ($response->{status} != 200) {
  croak 'cannot send assets status:' . $response->{status};
}
# 6. pay balance to others
$response = pay({
  from => '<from address>',
  to => '<receive address>',
  value => 100,
  payPassword => '<pay password>'
});
if ($response->{status} != 200) {
  croak 'cannot pay balance status:' . $response->{status};
}
# 7. let me try to mine the block
$response = let_me_try();
if ($response->{status} != 200) {
  croak 'cannot let me try status:' . $response->{status};
}
# 8. even more, please refer the java sdk doc... :).

APIs

Circle::Node

  1. subcribe

  2. server_features

  3. broadcast_transaction

Circle::User

  1. send_register_verify_code
  2. register
  3. send_verify_code
  4. login
  5. logout
  6. send_pay_verify_code
  7. set_pay_password
  8. have_pay_password
  9. send_reset_password_verify_code
  10. reset_password
  11. add_contacts
  12. list_contacts
  13. save_or_update_user_info
  14. get_user_info

Circle::Wallet

cloud wallets

  1. create_wallet
  2. list_wallet
  3. blance_of_address
  4. balance_of_wallet
  5. assets_of_wallet
  6. assets_of_address
  7. public_key_hash_from_address
  8. send_to
  9. pay
  10. search_tx_by_type
  11. search_tx_by_time
  12. let_me_try

open wallets

  1. public_address_by_uid
  2. public_assets_of_address
  3. public_balance_of_address
  4. public_search_transaction

Circle::Block

  1. get_block_hash_list
  2. get_block
  3. get_block_header_list
  4. get_block_data
  5. get_block_tail_hash_list
  6. get_block_tails_po
  7. get_transaction_by_txid
  8. search_tx_by_txid
  9. search_tx_by_address
  10. search_utxo