A computer-implemented method to participate in a token transfer process for transferring a first quantity of tokens from a sender node to a recipient node using a blockchain, the token transfer process including a plurality of participating nodes and execution of a set of indirect token transactions between multiple pairs of the participating nodes, the sender node and the recipient node being included in the token transfer process as participating nodes, the method, implemented at a participating node, comprising: obtaining (204, 304) a subset of the set of indirect token transactions, the subset including those transactions for which the participating node is either an input node or an output node, wherein the set of indirect token transactions is generated based on the first quantity of tokens and a predefined number of transaction rounds in the token transfer process; for each indirect token transaction in the subset, collaborating (206, 310) with a respective second participating node included in the indirect token transaction to generate a commitment channel for the indirect token transaction between the participating node and the second participating node; and collaborating with all other participating nodes in executing the indirect token transactions of the subset using the generated commitment channels, wherein generating the commitment channel for the indirect token transaction comprises: collaborating with the second participating node to: generate a first blockchain transaction ( T c) for committing an indirect quantity of tokens to transfer to an output address of the indirect token transaction; generate a second blockchain transaction ( T r,0) that returns the committed indirect quantity of tokens to an input address of the indirect token transaction; and generate a third blockchain transaction ( T t) for executing transfer of the committed indirect quantity of tokens to the output address of the indirect token transaction, the method further comprising: obtaining a key share ( k i) of a first private key (k), the first private key being unknown to all of the participating nodes; and collaborating in deriving a first public key corresponding to the first private key ( k) using secret share joining, wherein the third blockchain transaction ( T t) includes an unlocking script containing a secret value ( sv) that is based on the first private key (k), and wherein collaborating with all other participating nodes in executing the indirect token transactions of the subset comprises collaborating with all other participating nodes in deriving the first private key ( k) using the key share. obtaining (204, 304) a subset of the set of indirect token transactions, the subset including those transactions for which the participating node is either an input node or an output node, wherein the set of indirect token transactions is generated based on the first quantity of tokens and a predefined number of transaction rounds in the token transfer process; for each indirect token transaction in the subset, collaborating (206, 310) with a respective second participating node included in the indirect token transaction to generate a commitment channel for the indirect token transaction between the participating node and the second participating node; and collaborating with all other participating nodes in executing the indirect token transactions of the subset using the generated commitment channels, wherein generating the commitment channel for the indirect token transaction comprises: collaborating with the second participating node to: generate a first blockchain transaction ( T c) for committing an indirect quantity of tokens to transfer to an output address of the indirect token transaction; generate a second blockchain transaction ( T r,0) that returns the committed indirect quantity of tokens to an input address of the indirect token transaction; and generate a third blockchain transaction ( T t) for executing transfer of the committed indirect quantity of tokens to the output address of the indirect token transaction, generate a first blockchain transaction ( T c) for committing an indirect quantity of tokens to transfer to an output address of the indirect token transaction; generate a second blockchain transaction ( T r,0) that returns the committed indirect quantity of tokens to an input address of the indirect token transaction; and generate a third blockchain transaction ( T t) for executing transfer of the committed indirect quantity of tokens to the output address of the indirect token transaction, collaborating in deriving a first public key corresponding to the first private key ( k) using secret share joining, wherein the third blockchain transaction ( T t) includes an unlocking script containing a secret value ( sv) that is based on the first private key (k), and wherein collaborating with all other participating nodes in executing the indirect token transactions of the subset comprises collaborating with all other participating nodes in deriving the first private key ( k) using the key share.