A computer-implemented security method, the method comprising the steps of: (i) converting a first secret value accessible to a first user into a first derived public key, and transmitting the first derived public key to a second user; (ii) converting a second secret value accessible to the second user into a second derived public key, and transmitting the second derived public key to the first user; (iii) calculating a third derived public key based at least in part on the first derived public key; (iv) calculating a fourth derived public key based at least in part on the second derived public key; (v) applying a one-way function to each of the first secret value and the second secret value to create respective first and second veiled secret values; (vi) communicating the first veiled secret value from the first user to the second user and the second veiled secret value from the second user to the first user; and (vii) constructing first and second blockchain transactions each comprising the first veiled secret value and the second veiled secret value, the transactions arranged to be unlockable to transfer control of a respective first or second resource upon provision of both the first secret value and the second secret value to the respective transaction, wherein unlocking of the first blockchain transaction causes the first secret value to be revealed to the second user, and unlocking of the second blockchain transaction causes the second secret value to be revealed to the first user, and wherein revelation of the first secret value to the second user enables the second user to calculate a second private key corresponding to the third derived public key, and revelation of the second secret value to the first user enables the first user to calculate a first private key corresponding to the fourth derived public key. (i) converting a first secret value accessible to a first user into a first derived public key, and transmitting the first derived public key to a second user; (ii) converting a second secret value accessible to the second user into a second derived public key, and transmitting the second derived public key to the first user; (iii) calculating a third derived public key based at least in part on the first derived public key; (iv) calculating a fourth derived public key based at least in part on the second derived public key; (v) applying a one-way function to each of the first secret value and the second secret value to create respective first and second veiled secret values; (vi) communicating the first veiled secret value from the first user to the second user and the second veiled secret value from the second user to the first user; and (vii) constructing first and second blockchain transactions each comprising the first veiled secret value and the second veiled secret value, the transactions arranged to be unlockable to transfer control of a respective first or second resource upon provision of both the first secret value and the second secret value to the respective transaction, wherein unlocking of the first blockchain transaction causes the first secret value to be revealed to the second user, and unlocking of the second blockchain transaction causes the second secret value to be revealed to the first user, and wherein revelation of the first secret value to the second user enables the second user to calculate a second private key corresponding to the third derived public key, and revelation of the second secret value to the first user enables the first user to calculate a first private key corresponding to the fourth derived public key.