func Share(
	trx storage.Transaction,
	previousTxId merkle.Digest,
	transferTxId merkle.Digest,
	transferBlockNumber uint64,
	currentOwner *account.Account,
	balance uint64,
) {
	toLock.Lock()
	defer toLock.Unlock()
	transfer(trx, previousTxId, transferTxId, transferBlockNumber, currentOwner, nil, balance)
}
from storage/setup.go:

Ownership:
OwnerNextCount  BN   - next count value to use for appending to owned items
OwnerList       txId - list of owned items
OwnerTxIndex    BN   - position in list of owned items, for delete after transfer
Share - setup for share ownership transfer, must have a lock
package ownership
import (
	"encoding/binary"
	"sync"
	"github.com/bitmark-inc/bitmarkd/account"
	"github.com/bitmark-inc/bitmarkd/merkle"
	"github.com/bitmark-inc/bitmarkd/mode"
	"github.com/bitmark-inc/bitmarkd/storage"
	"github.com/bitmark-inc/bitmarkd/transactionrecord"
	"github.com/bitmark-inc/logger"
)
var toLock sync.Mutex