func (client *Client) SingleSignedBlockTransfer(blockTransferConfig *BlockTransferData) (*BlockTransferSingleSignedReply, error) {
	var link merkle.Digest
	err := link.UnmarshalText([]byte(blockTransferConfig.TxId))
	if nil != err {
		return nil, err
	}
	packed, blockTransfer, err := makeBlockTransferOneSignature(client.testnet, link, blockTransferConfig.Payments, blockTransferConfig.Owner, blockTransferConfig.NewOwner)
	if nil != err {
		return nil, err
	}
	if nil == blockTransfer {
		return nil, fault.MakeBlockTransferFailed
	}
	client.printJson("BlockTransfer Request", blockTransfer)
	response := BlockTransferSingleSignedReply{
		Identity:      blockTransfer.GetOwner().String(),
		BlockTransfer: hex.EncodeToString(packed),
	}
	return &response, nil
}
SingleSignedBlockTransfer - perform a transfer
package rpccalls
import (
	"encoding/hex"
	"golang.org/x/crypto/ed25519"
	"github.com/bitmark-inc/bitmarkd/account"
	"github.com/bitmark-inc/bitmarkd/command/bitmark-cli/configuration"
	"github.com/bitmark-inc/bitmarkd/currency"
	"github.com/bitmark-inc/bitmarkd/fault"
	"github.com/bitmark-inc/bitmarkd/merkle"
	"github.com/bitmark-inc/bitmarkd/pay"
	"github.com/bitmark-inc/bitmarkd/rpc/blockowner"
	"github.com/bitmark-inc/bitmarkd/transactionrecord"
)
type BlockTransferData struct {
	Payments currency.Map
	Owner    *configuration.Private
	NewOwner *account.Account
	TxId     string
}
type BlockTransferReply struct {
	BlockTransferId merkle.Digest                                   `json:"blockTransferId"`
	PayId           pay.PayId                                       `json:"payId"`
	Payments        map[string]transactionrecord.PaymentAlternative `json:"payments"`
	Commands        map[string]string                               `json:"commands,omitempty"`
}
type BlockTransferSingleSignedReply struct {
	Identity      string `json:"identity"`
	BlockTransfer string `json:"blockTransfer"`
}