На уровне идеи. C вероятностью 99% это не сработает в текущей реализации битокина.
Используем пример Transaction Puzzle из
https://en.bitcoin.it/wiki/Script.
G передает F значение 2SHA(F_PUB(password)), то есть двойное SHA от пароля, зашифрованного под открытым ключом F (заметим, что F не знает что G его не обманул).
Пусть 2SHA(F_PUB(password)) = 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000
F формирует транзакцию, получатель которой G и с командой вида
000000000000000000000000000000000000000000000000000000000000000
OP_HASH256
6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000
G подставляет F_PUB(password) вместо нулей и получает деньги. F видит транзацкию в блокчейне и получает свой пароль.
Но есть много нюансов связанных с безопасностью, так как скрипт подписывать ключом F нельзя (иначе G не сможет его поменять).