WO2021125399A1 - 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템 - Google Patents

블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템 Download PDF

Info

Publication number
WO2021125399A1
WO2021125399A1 PCT/KR2019/018156 KR2019018156W WO2021125399A1 WO 2021125399 A1 WO2021125399 A1 WO 2021125399A1 KR 2019018156 W KR2019018156 W KR 2019018156W WO 2021125399 A1 WO2021125399 A1 WO 2021125399A1
Authority
WO
WIPO (PCT)
Prior art keywords
escrow
contract
remittance
token
sender
Prior art date
Application number
PCT/KR2019/018156
Other languages
English (en)
French (fr)
Inventor
김재연
김현준
장호진
구건
유우식
Original Assignee
라인플러스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 라인플러스 주식회사 filed Critical 라인플러스 주식회사
Priority to PCT/KR2019/018156 priority Critical patent/WO2021125399A1/ko
Priority to KR1020227017460A priority patent/KR20220084401A/ko
Priority to JP2022537151A priority patent/JP7478240B2/ja
Publication of WO2021125399A1 publication Critical patent/WO2021125399A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/14Payment architectures specially adapted for billing systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/405Establishing or using transaction specific rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/407Cancellation of a transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Definitions

  • the description below relates to an escrow transaction method and system using a smart contract in a blockchain.
  • Blockchain is a distributed data storage technology that stores data in blocks, connects them in a chain, and replicates and stores them on numerous computers at the same time. It is also called a public transaction ledger. Transaction history is sent to all users participating in a transaction without keeping transaction records on a centralized server, and it can be implemented to prevent data forgery or falsification by sharing and collating information among all transaction participants in each transaction. have.
  • 10-2019-0133573 relates to a blockchain transaction system and a method through a smart contract, and an interface to use transactions and services by a smart contract by utilizing the unique characteristics of a blockchain by providing help request information in the network ecosystem, the service provider posts a transaction or contract, and the person who wants to provide help provides help for the related information or the service user agrees to the transaction (signature), etc. button (action)
  • a system and method in which cryptocurrency, an incentive, is paid as a reward by classifying the reward system for each activity by grade so that 'participation and sharing' activities can be continuously activated with a single mobile app in the network ecosystem by selecting . is starting
  • an escrow transaction method and system are provided that can process the remittance to the recipient when certain conditions are satisfied after depositing the money without immediate remittance.
  • a method for escrow transaction in a block chain system comprising: depositing a currency corresponding to the remittance of the sender in an escrow contract included in the block chain system for an escrow transaction from a sender to a receiver; remittance of the currency deposited in the escrow contract to the receiver when a predefined condition for the remittance of the sender is satisfied; and returning the currency deposited in the escrow contract to the sender when a predefined condition for the remittance is not satisfied.
  • the depositing of the currency may include: requesting remittance of the currency to a token contract of the blockchain system for which approval is requested from the sender; and receiving a token that is subordinate to the token contract from the token contract and approved according to the request of the sender, and deposits it in the escrow contract as a currency corresponding to the sender's remittance.
  • the depositing of the currency may include: receiving an escrow token remittance request from a token contract of the blockchain system that has received a request for escrow remittance from the sender; requesting remittance to the token contract in response to the request for remittance of the escrow token; and depositing a token remitted according to a request to the token contract as a currency corresponding to the remittance of the sender in the escrow contract.
  • the escrow transaction method includes the steps of installing the escrow contract according to a request from an owner of the escrow contract; setting the escrow contract in the token contract according to a request from the escrow contract owner; and setting the token contract in the escrow contract according to the control of the token contract.
  • the depositing of the currency may include: receiving a token fallback request including meta information related to an escrow transaction from a token contract of the blockchain system that has received a request for remittance from the sender; and receiving a token dependent on the token contract as a currency corresponding to the sender's remittance from the sender through the information on the escrow transaction obtained by parsing the meta information and depositing it in the escrow contract. can do.
  • the escrow transaction method includes the steps of installing the escrow contract according to a request from the owner of the escrow contract; and associating the escrow contract with the token contract according to the address of the token contract included in the request from the escrow contract owner.
  • the step of remittance of the deposited currency to the recipient may include, when a predefined condition for remittance of the sender is satisfied, according to an escrow reception request requested from a caller specified in the escrow contract, the It may be characterized by requesting a remittance from the escrow contract to the receiver with the token contract of the blockchain system.
  • the step of returning the deposited currency to the sender may include, when a predefined condition for the sender's remittance is not satisfied, according to the escrow cancellation request requested from the caller specified in the escrow contract, It may be characterized by requesting a remittance from the escrow contract to the sender with the token contract of the blockchain system.
  • the caller may be the owner or the sender of the escrow contract.
  • the currency corresponding to the sender's remittance may include a reference currency of the block chain system.
  • the currency may include a token subordinate to a token contract that the blockchain system further includes.
  • a computer program stored in a computer-readable recording medium in combination with a computer device to execute the method on the computer device.
  • At least one processor embodied to execute computer-readable instructions, wherein the at least one processor controls the remittance of the sender to an escrow contract comprised by the blockchain system for an escrow transaction from a sender to a receiver.
  • Deposit a corresponding currency and when a predefined condition for the sender's remittance is satisfied, the currency deposited in the escrow contract is remitted to the receiver, and when the predefined condition for the remittance is not satisfied, It provides a computer device, characterized in that for returning the currency deposited in the escrow contract to the sender.
  • immediate remittance does not occur, but after depositing money, remittance can be processed to the recipient when certain conditions are satisfied.
  • the sender may cancel the remittance.
  • FIG. 1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating an example of a computer device according to an embodiment of the present invention.
  • 3 to 5 are diagrams illustrating an example of an escrow transaction of a reference currency according to an embodiment of the present invention.
  • 6 to 8 are diagrams illustrating a first example of an escrow transaction for a token according to an embodiment of the present invention.
  • 9 to 12 are diagrams illustrating a second example of an escrow transaction for a token according to an embodiment of the present invention.
  • 13 to 16 are diagrams illustrating a third example of an escrow transaction for a token according to an embodiment of the present invention.
  • 17 is a flowchart illustrating an example of an escrow transaction method according to an embodiment of the present invention.
  • the escrow transaction system may be a blockchain system implemented by at least one computer device, and the escrow transaction method according to the embodiments of the present invention includes at least one computer included in the escrow transaction system. This can be done through the device.
  • the computer program according to an embodiment of the present invention may be installed and driven in the computer device, and the computer device may perform the escrow transaction method according to the embodiments of the present invention under the control of the driven computer program.
  • the above-described computer program may be stored in a computer-readable recording medium in combination with a computer device to execute the escrow transaction method in the computer.
  • FIG. 1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
  • the network environment of FIG. 1 shows an example including a plurality of electronic devices 110 , 120 , 130 , 140 , a plurality of servers 150 , 160 , and a network 170 .
  • FIG. 1 is an example for explaining the invention, and the number of electronic devices or the number of servers is not limited as in FIG. 1 .
  • the network environment of FIG. 1 only describes one example of environments applicable to the present embodiments, and the environment applicable to the present embodiments is not limited to the network environment of FIG. 1 .
  • the plurality of electronic devices 110 , 120 , 130 , and 140 may be a fixed terminal implemented as a computer device or a mobile terminal.
  • Examples of the plurality of electronic devices 110 , 120 , 130 , 140 include a smart phone, a mobile phone, a navigation device, a computer, a notebook computer, a digital broadcasting terminal, a personal digital assistant (PDA), and a portable multimedia player (PMP). ), and tablet PCs.
  • PDA personal digital assistant
  • PMP portable multimedia player
  • FIG. 1 the shape of a smartphone is shown as an example of the electronic device 110 , but in embodiments of the present invention, the electronic device 110 is substantially different from another through the network 170 using a wireless or wired communication method. It may refer to one of various physical computer devices capable of communicating with the electronic devices 120 , 130 , 140 and/or the servers 150 and 160 .
  • the communication method is not limited, and not only a communication method using a communication network (eg, a mobile communication network, a wired Internet, a wireless Internet, a broadcasting network) that the network 170 may include, but also short-range wireless communication between devices may be included.
  • the network 170 may include a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), and a broadband network (BBN). , the Internet, and the like.
  • PAN personal area network
  • LAN local area network
  • CAN campus area network
  • MAN metropolitan area network
  • WAN wide area network
  • BBN broadband network
  • the network 170 may include any one or more of a network topology including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree, or a hierarchical network, etc. not limited
  • Each of the servers 150 and 160 communicates with the plurality of electronic devices 110 , 120 , 130 , 140 and the network 170 through a computer device or a plurality of computers that provide commands, codes, files, contents, services, etc. It can be implemented in devices.
  • the server 150 provides a service (eg, a content providing service, a group call service (or a voice conference service) to the plurality of electronic devices 110 , 120 , 130 , and 140 connected through the network 170 ).
  • a service eg, a content providing service, a group call service (or a voice conference service)
  • a messaging service e.g, a mail service, a social network service, a map service, a translation service, a financial service, a payment service, a search service, a location-based service, etc.
  • FIG. 2 is a block diagram illustrating an example of a computer device according to an embodiment of the present invention.
  • Each of the plurality of electronic devices 110 , 120 , 130 , 140 or the servers 150 and 160 described above may be implemented by the computer device 200 illustrated in FIG. 2 .
  • the computer device 200 may include a memory 210 , a processor 220 , a communication interface 230 , and an input/output interface 240 .
  • the memory 210 is a computer-readable recording medium and may include a random access memory (RAM), a read only memory (ROM), and a permanent mass storage device such as a disk drive.
  • RAM random access memory
  • ROM read only memory
  • a permanent mass storage device such as a disk drive.
  • a non-volatile mass storage device such as a ROM and a disk drive may be included in the computer device 200 as a separate permanent storage device distinct from the memory 210 .
  • the memory 210 may store an operating system and at least one program code. These software components may be loaded into the memory 210 from a computer-readable recording medium separate from the memory 210 .
  • the separate computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, a disk, a tape, a DVD/CD-ROM drive, and a memory card.
  • the software components may be loaded into the memory 210 through the communication interface 230 instead of a computer-readable recording medium.
  • the software components may be loaded into the memory 210 of the computer device 200 based on a computer program installed by files received through the network 170 .
  • the processor 220 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input/output operations.
  • the instructions may be provided to the processor 220 by the memory 210 or the communication interface 230 .
  • the processor 220 may be configured to execute a received instruction according to a program code stored in a recording device such as the memory 210 .
  • the communication interface 230 may provide a function for the computer device 200 to communicate with other devices (eg, the storage devices described above) through the network 170 .
  • a request, command, data, file, etc. generated by the processor 220 of the computer device 200 according to a program code stored in a recording device such as the memory 210 is transmitted to the network ( 170) to other devices.
  • signals, commands, data, files, etc. from other devices may be received by the computer device 200 through the communication interface 230 of the computer device 200 via the network 170 .
  • a signal, command, or data received through the communication interface 230 may be transferred to the processor 220 or the memory 210 , and the file may be a storage medium (described above) that the computer device 200 may further include. persistent storage).
  • the input/output interface 240 may be a means for an interface with the input/output device 250 .
  • the input device may include a device such as a microphone, keyboard, or mouse
  • the output device may include a device such as a display or a speaker.
  • the input/output interface 240 may be a means for an interface with a device in which functions for input and output are integrated into one, such as a touch screen.
  • the input/output device 250 may be configured as one device with the computer device 200 .
  • the computer device 200 may include fewer or more components than those of FIG. 2 . However, there is no need to clearly show most of the prior art components.
  • the computer device 200 may be implemented to include at least a portion of the above-described input/output device 250 or may further include other components such as a transceiver and a database.
  • a base coin defined in a protocol and a token defined through a smart contract may be utilized for transactions.
  • escrow transactions are made possible by defining three functions of deposit, reception and cancellation in the smart contract for escrow (hereinafter, 'escrow contract').
  • the terms "sender”, “receiver” and “third party” described below may refer to an electronic device used by a sender, a receiver, or a third party to process remittance.
  • FIGS. 3 to 5 are diagrams illustrating an example of an escrow transaction of a reference currency according to an embodiment of the present invention.
  • a smart contract 310 for escrow is installed in the blockchain system 300 to process an escrow transaction according to the invocation of three functions: deposit, reception, and cancellation for money as a reference currency.
  • the sender A 320 deposits money as a reference currency in the escrow contract 310 by calling the escrow transfer function ("escrowTransfer()") defined in the escrow contract 310 .
  • the first parameter “B” of the escrow remittance function may be an identifier of the recipient B 330 , the recipient of the remittance, and the second parameter “value” may indicate the amount of the remittance.
  • "Coin Transfer” may represent a process in which the remittance of the base currency is made from the sender A 320 to the escrow contract 310 .
  • the escrow receiving function may include a parameter for identifying a corresponding remittance.
  • a caller who can call the escrow reception function may be specified in the escrow contract 310 . This caller may be the called party or a trusted third party.
  • an escrow contract owner (escrow contract owner, 410) who is the owner or developer of the escrow contract 310 as a trusted third party is specified as a caller.
  • the escrow contract owner 410 may call the escrow reception function to the escrow contract 310 when a predefined condition for the remittance is satisfied, and accordingly, the money deposited in the escrow contract 310 is transferred to the escrow contract ( 310) may be remitted to the recipient B (330).
  • the function “baseCoinTransfer(B, value)” shown in FIG. 4 is a function for transferring the base currency, and the escrow contract 310 sends the second parameter “value” to the recipient B 330 identified by the first parameter “B”. It may mean a function of transferring money as a reference currency corresponding to ".
  • the sender A 320 returns the amount deposited in the escrow contract 310 as the escrow cancellation function ("escrowCancel()") is called.
  • the escrow cancellation function may include a parameter for identifying the remittance.
  • a caller capable of calling the escrow cancellation function may be specified in the escrow contract 310 . This caller can be the sender himself or it can be a trusted third party. 5 shows an example in which the escrow contract owner 410 is specified as a caller as a trusted third party.
  • the escrow contract owner 410 may call the escrow cancellation function to the escrow contract 310 when a predefined condition for the remittance is not satisfied, and accordingly, the money deposited in the escrow contract 310 is transferred to the sender A 320 may be remitted.
  • the function “baseCoinTransfer(A, value)” shown in FIG. 5 is a function for transferring the base currency, and the escrow contract 310 sends the second parameter “value” to the sender A 320 identified by the first parameter “A”. It may mean a function of transferring money as a reference currency corresponding to ".
  • the escrow transaction for the token has a flow similar to the escrow transaction for the reference currency described above with reference to FIGS. 3 to 5 .
  • the function of the token contract must be called in addition to the functions of the escrow contract for token remittance.
  • three methods for performing escrow transactions for tokens will be described.
  • a DApp (Decentralized Application, DApp, 600) installed and driven in the block chain system 300 may be an application that distributes, stores, and drives information on a network without a central server by utilizing block chain technology.
  • the DApp 600 may include an escrow contract 610 and a specific smart contract to which the token is dependent (hereinafter, 'token contract 620').
  • FIG. 6 shows an example of a process in which the sender A 320 deposits money in the escrow contract 610 first in order to remit money as a token to the receiver B 320 .
  • the sender A 320 requests approval of the remittance by using the approval function ("approve()") to the token contract 620 to which the token is dependent, and the escrow remittance function ("escrowTransfer() )") to request a deposit.
  • the first parameter of the approval function may mean a remittance target. At this time, the money must be deposited in the escrow contract (610).
  • the first parameter "escrowContractAddress" of the authorization function of the token contract 620 that the sender A 320 calls is the token contract 620 so that money can be transferred from the token contract 620 to the escrow contract 610.
  • the second parameter “value” of the approval function may indicate the amount of remittance
  • the third parameter “currentAllowance” may indicate the amount of money approved for remittance so far.
  • the first parameter "B" of the escrow remittance function may indicate the recipient B 320, which is the actual recipient of the remittance
  • the second parameter "value” may indicate the amount of the remittance.
  • the escrow contract 610 may request remittance to the token contract 620 in response to the call of the escrow remittance function.
  • the first parameter "A” is the sender A (320)
  • the second parameter "escrowContractAddress” is the escrow contract 610
  • the third parameter "value” is the amount of remittance. have.
  • the escrow contract 610 may request the token contract 620 to transfer the money of the sender A 320 to the escrow contract 610 to the token contract 620 .
  • the token contract 620 transfers the amount requested by the function "transferFrom()" within the amount approved by the sender A 320 through the approval function (the amount requested by the escrow contract 610) to the escrow contract ( 610) by remittance (actually changing the owner of the corresponding token from the sender A 320 to the escrow contract 610), the sender A 320's money can be deposited in the escrow contract 610.
  • “Token Transfer” may represent a process in which the token contract 620 transfers a token to the escrow contract 610 .
  • the escrow contract owner 620 as a trusted third party calls the escrow receiving function ("escrowReceive()") defined in the escrow contract 610 as a predefined condition for the remittance is satisfied.
  • the escrow reception function may include a parameter for identifying the remittance.
  • the escrow contract 610 may call the remittance function (“transfer( )”) to the token contract 620 so that the deposited money is transferred to the receiver B 330 .
  • the first parameter “B” of the remittance function may be an identifier of the recipient B 330 , the target of the remittance, and the second parameter “value” may mean the amount of remittance.
  • the token contract 620 may transfer the money deposited in the escrow contract 610 to the receiver B 330 by changing the owner of the token deposited by the escrow contract 610 to the receiver B 330. have.
  • “Token Transfer” may represent a process in which the escrow contract 610 transfers money deposited by the sender A 320 to the receiver B 330 .
  • the sender A 320 returns the amount deposited in the escrow contract 610 as the escrow cancellation function ("escrowCancel()") is called.
  • the escrow cancellation function may include a parameter for identifying the remittance.
  • a caller capable of calling the escrow cancellation function may be specified in the escrow contract 610 . This caller can be the sender himself or it can be a trusted third party. 8 shows an example in which the escrow contract owner 620 is specified as a caller as a trusted third party.
  • the escrow contract 610 may call the remittance function (“transfer( )”) defined in the token contract 620 .
  • the first parameter "A" of the remittance function may be the identifier of the recipient A 320, the target of the remittance, and the second parameter "value” may mean the amount of remittance.
  • the token contract 620 may process the remittance from the escrow contract 610 to the sender A 320 by changing the token deposited in the escrow contract 610 to be owned by the sender A 320 .
  • “Token Transfer” may represent a process in which the escrow contract 610 returns the money deposited by the sender A 320 to the sender A 320 .
  • the escrow contract 610 and the token contract 620 are separate interfaces because the escrow contract 610 operates as an individual subject to receive and remit the token of the token contract 620. can be maintained
  • FIGS. 9 to 12 are diagrams illustrating a second example of an escrow transaction for a token according to an embodiment of the present invention.
  • the DApp 900 may be installed and driven in the blockchain system 300 , and may include a token contract 910 and an escrow contract 920 .
  • the escrow contract owner 930 installs the token contract 910 and the escrow contract 920 in the DApp 900 .
  • the escrow contract owner 930 can directly install the escrow contract 920 in the dapp 900, and a function defined to be executed when installing the contract in the token contract 910 already installed in the dapp 900.
  • the token contract 910 can be controlled to set the escrow contract (920).
  • the token contract 910 may set the escrow contract 920 , and set the address of the token contract 910 in the escrow contract 920 .
  • 'contractAddress1' may mean the address of the escrow contract 920
  • 'contractAddress2' may mean the address of the token contract 910, respectively.
  • FIG. 10 shows an example of a process in which the token is deposited in the escrow contract 920 as the sender A 320 requests an escrow transaction.
  • the token contract 910 first approves the remittance through the approval function ("approve()"), and then uses the escrow token remittance function ("escrowTokenTransfer()") to the escrow contract 920 to sender A 320, receiver B 330
  • the approval function may use the address of the escrow contract 920 and the remittance amount as parameters, respectively.
  • the escrow contract 920 may request a remittance from the token contract 910 to the escrow contract 920 using the function “transferFrom( )”.
  • the first parameter "ES” of the function "transferFrom()” may indicate the address of the escrow contract 920, and the second parameter “value” may indicate the amount of remittance.
  • "Token Transfer” means that the token that the sender A 320 wants to transfer to the receiver B 330 is transferred to the escrow contract 920 (actually, the owner of the corresponding token in the token contract 910 is the sender A ( 320) to the escrow contract 920) may mean that it is deposited in the escrow contract 920.
  • the escrow contract owner 930 as a trusted third party calls the escrow receiving function ("escrowReceive()") defined in the escrow contract 920 as a predefined condition for the remittance is satisfied.
  • the escrow reception function may include a parameter for identifying the remittance.
  • the escrow contract 920 may call a remittance function (“transfer( )”) defined in the token contract 910 .
  • the first parameter "B" of the remittance function may be an identifier of the recipient B 330, the target of the remittance, and the second parameter "value" may mean the amount of remittance.
  • the token contract 910 changes the owner of the token of the escrow contract 920 to the recipient B 330, so that money deposited in the escrow contract 920 to the recipient B 330 can be transferred.
  • “Token Transfer” may represent a process in which the escrow contract 920 transfers money deposited by the sender A 320 to the receiver B 330 .
  • the sender A 320 returns the amount deposited in the escrow contract 920 as the escrow cancellation function ("escrowCancel()") is called.
  • the escrow cancellation function may include a parameter for identifying the remittance.
  • a caller capable of calling the escrow cancellation function may be specified in the escrow contract 920 . This caller can be the sender himself or it can be a trusted third party. 12 shows an example in which the escrow contract owner 930 is specified as a caller as a trusted third party.
  • the escrow contract 920 may call the remittance function (“transfer( )”) defined in the token contract 910 .
  • the first parameter "A" of the remittance function may be the identifier of the recipient A 320, the target of the remittance, and the second parameter "value" may mean the amount of remittance.
  • the token contract 910 may change the owner of the token of the escrow contract 920 to the sender A 320, so that the deposited amount is returned.
  • “Token Transfer” may represent a process in which the escrow contract 920 returns the money deposited by the sender A 320 to the sender A 320 .
  • the sender A 320 can process the process for depositing money to be remitted through one transaction. do.
  • FIGS. 13 to 16 are diagrams illustrating a third example of an escrow transaction for a token according to an embodiment of the present invention.
  • the DApp 1300 may be installed and driven in the blockchain system 300 , and may include a token contract 1310 and an escrow contract 1320 .
  • the escrow contract owner 930 may link the escrow contract 1320 with the token contract 1310 using a function defined to be executed when the contract is installed in the escrow contract 1320 .
  • the sender A 320 may request a remittance to the escrow contract 1320 through the token contract 1310 using a remittance function (“transfer( )”) defined in the token contract 1310 .
  • the second parameter of the remittance function may be an amount to be remitted, such as "value”.
  • the third parameter of the remittance function may indicate escrow-related meta information (recipient, memo) such as "0x+'transferid:toAddress:memo".
  • the token contract 1310 is a token fallback function (") defined in the contract corresponding to the CA (escrow contract 1320 in this embodiment) when the recipient is a CA (Contract Address) rather than an Externally Owned Wallet (EOA).
  • tokenFallback() can be called, and the meta information described above can be entered in the data field of the token fallback function in the form of bytes.
  • the escrow contract 1320 may deposit money remitted from the sender A 320 by parsing the meta information and performing the escrow logic.
  • Token Transfer may mean that the token that the sender A 320 wants to send to the receiver B 330 is transferred to the escrow contract 920 and deposited.
  • the function "escrow_token_transfer()" may be a function for post-processing such as being called within the token fallback function to record the recipient of the remittance in the escrow contract 920 and processing data validation.
  • the escrow contract owner 1330 as a trusted third party calls the escrow receiving function ("escrowReceive()") defined in the escrow contract 1320 as a predefined condition for the remittance is satisfied.
  • the escrow reception function may include a parameter for identifying the remittance.
  • the escrow contract 1320 may call a remittance function (“transfer()”) defined in the token contract 1310 .
  • the first parameter "B" of the remittance function may be an identifier of the recipient B 330, the target of the remittance, and the second parameter "value" may mean the amount of remittance.
  • the token contract 1310 may process the money deposited in the escrow contract 920 to be remitted to the recipient B 330 by changing the owner of the token of the escrow contract 920 to the recipient B 330 .
  • “Token Transfer” may represent a process in which the escrow contract 1320 transfers money deposited by the sender A 320 to the receiver B 330 .
  • 16 shows that when a predefined condition for the remittance is not satisfied, the sender A 320 returns the amount deposited in the escrow contract 920 as the escrow cancellation function ("escrowCancel()") is called. example is shown.
  • the escrow cancellation function may include a parameter for identifying the remittance.
  • a caller capable of calling the escrow cancellation function may be specified in the escrow contract 1320 . This caller can be the sender himself or it can be a trusted third party. 16 shows an example in which the escrow contract owner 1330 is specified as a caller as a trusted third party.
  • the escrow contract 1320 may call the remittance function (“transfer( )”) defined in the token contract 1310 .
  • the first parameter "A" of the remittance function may be the identifier of the recipient A 320, the target of the remittance, and the second parameter "value” may mean the amount of remittance.
  • the token contract 1310 may return the money deposited in the escrow contract 1320 to the sender A 320 by changing the owner of the token of the escrow contract 1320 to the sender A 320 .
  • “Token Transfer” may represent a process in which the escrow contract 1320 returns the money deposited by the sender A 320 to the sender A 320 .
  • the sender A 320 can process a process for depositing money to be remitted through one transaction.
  • Conditions for remittance may be defined in various ways depending on the person who sets the conditions and in some cases. For example, it may be considered that a condition is satisfied when the sender requests the transfer of money, or it may be considered that the condition is not satisfied when the sender requests cancellation of the remittance. In addition, conditions such as allowing remittance to proceed after a certain period of time or allowing remittance to proceed on a specific date may be variously defined.
  • the escrow transaction method according to this embodiment may be performed by the escrow contract included in the block chain system 300, and actually by the processor 200 of the computer device 200 executing the code of the escrow contract can be performed.
  • the processor 220 of the computer device 200 executes a control instruction according to the code of the operating system included in the memory 210 or the code of at least one computer program (eg, the code of the escrow contract).
  • the processor 220 causes the computer device 200 to perform the steps 1710 to 1740 included in the method of FIG. 17 according to a control command provided by the code stored in the computer device 200 . can control
  • the computer device 200 may deposit a currency corresponding to the sender's remittance in the escrow contract included in the block chain system for the escrow transaction from the sender to the receiver.
  • the currency corresponding to the sender's remittance in the blockchain system may include the reference currency of the blockchain system or a token subordinate to the token contract further included in the blockchain system.
  • the computer device 200 may directly deposit the reference currency corresponding to the sender's remittance in the escrow contract.
  • the currency corresponding to the sender's remittance is a token dependent on a specific token contract
  • the token corresponding to the sender's remittance can be deposited in the escrow contract through the token contract as in the following embodiments.
  • the computer device 200 requests a transfer of currency to the token contract of the blockchain system for which approval is requested from the sender in step 1710, is subordinated to the token contract from the token contract, and is approved according to the request of the sender You can receive the remitted token and deposit it in the escrow contract as a currency corresponding to the sender's remittance.
  • the deposit method according to this embodiment has been described in detail above with reference to FIG. 6 .
  • the computer device 200 receives the escrow token remittance request from the token contract of the blockchain system that has received the escrow remittance request from the sender in step 1710, and sends the remittance to the token contract in response to the escrow token remittance request and deposit the remitted token in the escrow contract as a currency corresponding to the sender's remittance according to the request to the token contract.
  • the deposit method according to this embodiment has been described in detail above with reference to FIG. 10 .
  • the computer device 200 installs the escrow contract according to a request from the owner of the escrow contract, and according to the request from the escrow contract owner, the token contract You can set up an escrow contract, and you can set up a token contract in the escrow contract under the control of the token contract.
  • the escrow contract and the token contract are linked to each other so that the token contract can recognize the escrow contract.
  • the computer device 200 receives a token fallback request including meta information related to the escrow transaction from the token contract of the block chain system that has received the request for remittance from the sender in step 1710, and transmits the meta information.
  • a token dependent on the token contract can be remitted from the sender as a currency corresponding to the sender's remittance and deposited in the escrow contract.
  • the deposit method according to this embodiment has been described in detail above with reference to FIG. 14 .
  • the computer device 200 installs the escrow contract according to a request from the owner of the escrow contract, and the address of the token contract included in the request from the escrow contract owner Accordingly, the escrow contract can be linked with the token contract. In this case, there is no change in the specification of the token contract and there is no need to go through the process of separately recognizing the escrow contract.
  • the computer device 200 may determine whether a predefined condition for the sender's remittance is satisfied. At this time, if the predefined condition is satisfied, the computer device 200 may perform step 1730 , and if the predefined condition is not satisfied, the computer device 200 may perform step 1740 .
  • the predefined condition can be made by the caller specified in the escrow contract, and the caller uses the escrow reception function when the predefined condition is satisfied, and the escrow cancel function when the predefined condition is not satisfied. can be called individually.
  • the computer device 200 may determine that a predefined condition is satisfied when the escrow reception function is called, and may determine that the predefined condition is not satisfied when the escrow cancel function is called.
  • the computer device 200 may remit the currency deposited in the escrow contract to the receiver.
  • the computer device 200 performs an escrow reception request from a caller specified in the escrow contract when a predefined condition for the sender's remittance is satisfied.
  • the token contract of the blockchain system From the escrow contract to the receiver, the token contract of the blockchain system. You can request a remittance. Previously, the remittance to such a recipient has been described in detail with reference to FIGS. 7, 11 and 15 .
  • the computer device 200 may return the currency deposited in the escrow contract to the sender.
  • the computer device 200 in response to the escrow cancellation request requested from the caller specified in the escrow contract, when a predefined condition for the sender's remittance is not satisfied, from the escrow contract to the sender in the token contract of the blockchain system may request a remittance of The return of the deposited call to the sender has been described in detail above with reference to FIGS. 8, 12 and 16 .
  • the caller may be the owner or sender of the escrow contract.
  • immediate remittance is not performed, and the remittance can be processed to the recipient when a specific condition is satisfied after depositing money.
  • the sender may cancel the remittance depending on whether certain conditions are satisfied.
  • the source code of the smart contract is transparently disclosed on the blockchain network, users can transparently know what kind of logic the escrow function operates.
  • the system or apparatus described above may be implemented as a hardware component or a combination of a hardware component and a software component.
  • devices and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA). , a programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions, may be implemented using one or more general purpose or special purpose computers.
  • the processing device may execute an operating system (OS) and one or more software applications running on the operating system.
  • the processing device may also access, store, manipulate, process, and generate data in response to execution of the software.
  • OS operating system
  • the processing device may also access, store, manipulate, process, and generate data in response to execution of the software.
  • the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.
  • the software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device.
  • the software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. may be embodied in The software may be distributed over networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.
  • the method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium.
  • the computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • the medium may be to continuously store a computer executable program, or to temporarily store it for execution or download.
  • the medium may be various recording means or storage means in the form of a single or several hardware combined, it is not limited to a medium directly connected to any computer system, and may exist distributed on a network.
  • Examples of the medium include a hard disk, a magnetic medium such as a floppy disk and a magnetic tape, an optical recording medium such as CD-ROM and DVD, a magneto-optical medium such as a floppy disk, and those configured to store program instructions, including ROM, RAM, flash memory, and the like.
  • examples of other media may include recording media or storage media managed by an app store that distributes applications, sites that supply or distribute various other software, and servers.
  • Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템을 개시한다. 일실시예에 따른 에스크로 거래 방법은 송신자로부터 수신자로의 에스크로 거래에 대해 상기 블록체인 시스템이 포함하는 에스크로 컨트랙트에 상기 송신자의 송금에 대응하는 통화를 예치하는 단계, 상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 수신자에게 송금하는 단계 및 상기 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 송신자에게 반환하는 단계를 포함할 수 있다.

Description

블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템
아래의 설명은 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템에 관한 것이다.
블록체인은 블록에 데이터를 담아 체인 형태로 연결하여 수많은 컴퓨터에 동시에 이를 복제 및 저장하는 분산형 데이터 저장 기술로서, 공공 거래 장부라고도 부른다. 중앙 집중형 서버에 거래 기록을 보관하지 않고 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며, 거래 때마다 모든 거래 참여자들이 정보를 공유하고 이를 대조함으로써, 데이터 위조나 변조를 할 수 없도록 구현될 수 있다. 예를 들어, 한국공개특허 제10-2019-0133573호는 스마트 컨트랙트를 통한 블록체인 거래 시스템 및 그 방법에 관한 것으로, 블록체인 고유의 특성을 활용하여 스마트 컨트랙트에 의하여 거래 및 서비스를 이용할 수 있도록 인터페이스를 제공하여 도움 요청자는 네트워크 생태계에서 도움요청 정보, 서비스 제공자는 거래 또는 계약을 게시하고, 도움을 제공하고자 하는자는 관련 정보에 대해 도움제공 또는 서비스 이용자가 거래 동의(서명) 등의 버튼(행위)을 선택함으로써 네트워크 생태계에서 하나의 모바일 앱으로 '참여와 공유' 활동이 지속적으로 활성화될 수 있도록 각자의 활동에 대하여 보상체계를 등급별로 구분하여 인센티브인 암호 화폐가 보상으로 지급되는 시스템 및 그 방법을 개시하고 있다.
이러한 종래의 블록체인상에서의 거래는 송신자와 수신자의 지갑 주소를 명시하고 거래를 요청하면, 해당 거래가 포함된 블록이 확정되는 순간 거래가 이루어진다. 그렇기 때문에 송신자와 수신자간의 신뢰관계가 명확하지 않거나, 거래가 완료되기 위해 특정 조건이 만족되어야 하는 경우에는 적합하지 않다.
스마트 컨트랙트에 거래가 성립되기 위한 조건을 명시함으로써 즉각적인 송금이 되지 않고, 돈을 예치해둔 후 특정 조건이 만족되었을 때 수신자에게 송금을 처리할 수 있는 에스크로 거래 방법 및 시스템을 제공한다.
블록체인 시스템의 에스크로 거래 방법에 있어서, 송신자로부터 수신자로의 에스크로 거래에 대해 상기 블록체인 시스템이 포함하는 에스크로 컨트랙트에 상기 송신자의 송금에 대응하는 통화를 예치하는 단계; 상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 수신자에게 송금하는 단계; 및 상기 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 송신자에게 반환하는 단계를 포함하는 에스크로 거래 방법을 제공한다.
일측에 따르면, 상기 통화를 예치하는 단계는, 상기 송신자로부터 승인을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로 상기 통화의 송금을 요청하는 단계; 및 상기 토큰 컨트랙트로부터 상기 토큰 컨트랙트에 종속되고 상기 송신자의 요청에 따라 승인된 토큰을 송금받아 상기 송신자의 송금에 대응하는 통화로서 상기 에스크로 컨트랙트에 예치하는 단계를 포함하는 것을 특징으로 할 수 있다.
다른 측면에 따르면, 상기 통화를 예치하는 단계는, 상기 송신자로부터 에스크로 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 토큰 송금 요청을 수신하는 단계; 상기 에스크로 토큰 송금 요청에 응답하여 상기 토큰 컨트랙트로 송금을 요청하는 단계; 및 상기 토큰 컨트랙트로의 요청에 따라 송금된 토큰을 상기 송신자의 송금에 대응하는 통화로서 상기 에스크로 컨트랙트에 예치하는 단계를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 에스크로 거래 방법은 상기 에스크로 컨트랙트의 오너(owner)로부터의 요청에 따라 상기 에스크로 컨트랙트를 설치하는 단계; 상기 에스크로 컨트랙트 오너로부터의 요청에 따라 상기 토큰 컨트랙트에 상기 에스크로 컨트랙트를 설정하는 단계; 및 상기 토큰 컨트랙트의 제어에 따라 상기 에스크로 컨트랙트에 상기 토큰 컨트랙트를 설정하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 통화를 예치하는 단계는, 상기 송신자로부터 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 거래와 관련된 메타 정보가 포함된 토큰 폴백 요청을 수신하는 단계; 및 상기 메타 정보를 파싱하여 얻어지는 에스크로 거래에 대한 정보를 통해 상기 송신자로부터 상기 송신자의 송금에 대응하는 통화로서 상기 토큰 컨트랙트에 종속된 토큰을 송금받아 상기 에스크로 컨트랙트에 예치하는 단계를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 에스크로 거래 방법은 상기 에스크로 컨트랙트의 오너로부터의 요청에 따라 상기 에스크로 컨트랙트를 설치하는 단계; 및 상기 에스크로 컨트랙트 오너로부터의 요청이 포함하는 상기 토큰 컨트랙트의 주소에 따라 상기 에스크로 컨트랙트를 상기 토큰 컨트랙트와 연계시키는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 예치된 통화를 상기 수신자에게 송금하는 단계는, 상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우에 상기 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 수신 요청에 따라, 상기 블록체인 시스템의 토큰 컨트랙트로 상기 에스크로 컨트랙트로부터 상기 수신자로의 송금을 요청하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 예치된 통화를 상기 송신자에게 반환하는 단계는, 상기 송신자의 송금에 대해 기 정의된 조건이 만족되지 않은 경우에 상기 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 취소 요청에 따라, 상기 블록체인 시스템의 토큰 컨트랙트로 상기 에스크로 컨트랙트로부터 상기 송신자로의 송금을 요청하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 호출자는 상기 에스크로 컨트랙트의 오너 또는 상기 송신자인 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 송신자의 송금에 대응하는 통화는 상기 블록체인 시스템의 기준 통화를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 통화는 상기 블록체인 시스템이 더 포함하는 토큰 컨트랙트에 종속된 토큰을 포함하는 것을 특징으로 할 수 있다.
컴퓨터 장치와 결합되어 상기 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 제공한다.
상기 방법을 컴퓨터 장치에 실행시키기 위한 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록매체를 제공한다.
컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서에 의해, 송신자로부터 수신자로의 에스크로 거래에 대해 상기 블록체인 시스템이 포함하는 에스크로 컨트랙트에 상기 송신자의 송금에 대응하는 통화를 예치하고, 상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 수신자에게 송금하고, 상기 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 송신자에게 반환하는 것을 특징으로 하는 컴퓨터 장치를 제공한다.
스마트 컨트랙트에 거래가 성립되기 위한 조건을 명시함으로써 즉각적인 송금이 되지 않고, 돈을 예치해둔 후 특정 조건이 만족되었을 때 수신자에게 송금을 처리할 수 있다.
특정 조건의 만족 여부에 따라 송금자가 송금을 취소할 수 있다.
스마트 컨트랙트는 소스코드가 블록체인 네트워크상에 투명하게 공개되기 때문에, 사용자들이 어떤 로직으로 에스크로 기능이 동작하는지 투명하게 알 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다.
도 3 내지 도 5는 본 발명의 일실시예에 있어서, 기준 통화의 에스크로 거래의 예를 도시한 도면들이다.
도 6 내지 도 8은 본 발명의 일실시예에 있어서, 토큰에 대한 에스크로 거래의 제1 예를 도시한 도면들이다.
도 9 내지 도 12는 본 발명의 일실시예에 있어서, 토큰에 대한 에스크로 거래의 제2 예를 도시한 도면들이다.
도 13 내지 도 16은 본 발명의 일실시예에 있어서, 토큰에 대한 에스크로 거래의 제3 예를 도시한 도면들이다.
도 17은 본 발명의 일실시예에 따른 에스크로 거래 방법의 예를 도시한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
본 발명의 실시예들에 따른 에스크로 거래 시스템은 적어도 하나의 컴퓨터 장치에 의해 구현되는 블록체인 시스템일 수 있으며, 본 발명의 실시예들에 따른 에스크로 거래 방법은 에스크로 거래 시스템에 포함되는 적어도 하나의 컴퓨터 장치를 통해 수행될 수 있다. 컴퓨터 장치에는 본 발명의 일실시예에 따른 컴퓨터 프로그램이 설치 및 구동될 수 있고, 컴퓨터 장치는 구동된 컴퓨터 프로그램의 제어에 따라 본 발명의 실시예들에 따른 에스크로 거래 방법을 수행할 수 있다. 상술한 컴퓨터 프로그램은 컴퓨터 장치와 결합되어 에스크로 거래 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다. 또한, 도 1의 네트워크 환경은 본 실시예들에 적용 가능한 환경들 중 하나의 예를 설명하는 것일 뿐, 본 실시예들에 적용 가능한 환경이 도 1의 네트워크 환경으로 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 장치들 중 하나를 의미할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 서비스(일례로, 컨텐츠 제공 서비스, 그룹 통화 서비스(또는 음성 컨퍼런스 서비스), 메시징 서비스, 메일 서비스, 소셜 네트워크 서비스, 지도 서비스, 번역 서비스, 금융 서비스, 결제 서비스, 검색 서비스, 위치 기반 서비스 등)를 제공하는 시스템일 수 있다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다. 앞서 설명한 복수의 전자 기기들(110, 120, 130, 140) 각각이나 서버들(150, 160) 각각은 도 2를 통해 도시된 컴퓨터 장치(200)에 의해 구현될 수 있다.
이러한 컴퓨터 장치(200)는 도 2에 도시된 바와 같이, 메모리(210), 프로세서(220), 통신 인터페이스(230) 그리고 입출력 인터페이스(240)를 포함할 수 있다. 메모리(210)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 디스크 드라이브와 같은 비소멸성 대용량 기록장치는 메모리(210)와는 구분되는 별도의 영구 저장 장치로서 컴퓨터 장치(200)에 포함될 수도 있다. 또한, 메모리(210)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(210)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 메모리(210)로 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 인터페이스(230)를 통해 메모리(210)에 로딩될 수도 있다. 예를 들어, 소프트웨어 구성요소들은 네트워크(170)를 통해 수신되는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 컴퓨터 장치(200)의 메모리(210)에 로딩될 수 있다.
프로세서(220)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(210) 또는 통신 인터페이스(230)에 의해 프로세서(220)로 제공될 수 있다. 예를 들어 프로세서(220)는 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 인터페이스(230)은 네트워크(170)를 통해 컴퓨터 장치(200)가 다른 장치(일례로, 앞서 설명한 저장 장치들)와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(200)의 프로세서(220)가 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 통신 인터페이스(230)의 제어에 따라 네트워크(170)를 통해 다른 장치들로 전달될 수 있다. 역으로, 다른 장치로부터의 신호나 명령, 데이터, 파일 등이 네트워크(170)를 거쳐 컴퓨터 장치(200)의 통신 인터페이스(230)를 통해 컴퓨터 장치(200)로 수신될 수 있다. 통신 인터페이스(230)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(220)나 메모리(210)로 전달될 수 있고, 파일 등은 컴퓨터 장치(200)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.
입출력 인터페이스(240)는 입출력 장치(250)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(240)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(250)는 컴퓨터 장치(200)와 하나의 장치로 구성될 수도 있다.
또한, 다른 실시예들에서 컴퓨터 장치(200)는 도 2의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 장치(200)는 상술한 입출력 장치(250) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
본 발명의 실시예들에 따른 블록체인 네트워크는 프로토콜에 정의된 기준 통화(base coin)와 스마트 컨트랙트를 통해 정의된 토큰(token)이 거래에 활용될 수 있다. 이때, 기준 통화는 특정 스마트 컨트랙트에 의존성을 갖지 않기 때문에 에스크로를 위한 스마트 컨트랙트(이하, '에스크로 컨트랙트')에 예치, 수신 및 취소의 세 가지 함수를 정의함으로써, 에스크로 거래가 가능해진다. 이후에서 설명되는 "송신자", "수신자" 및 "제3자" 등은 실질적으로 송신자나 수신자 또는 제3자가 송금의 처리를 위해 이용하는 전자 기기를 의미할 수 있다.
도 3 내지 도 5는 본 발명의 일실시예에 있어서, 기준 통화의 에스크로 거래의 예를 도시한 도면들이다. 블록체인 시스템(300)에는 에스크로를 위한 스마트 컨트랙트(310)가 설치되어 기준 통화로서의 돈에 대한 예치, 수신 및 취소의 세 가지 함수의 호출에 따라 에스크로 거래를 처리할 수 있다.
도 3은 송신자 A(320)가 에스크로 컨트랙트(310)에 정의된 에스크로 송금 함수("escrowTransfer()")를 호출함으로써 기준 통화로서의 돈을 에스크로 컨트랙트(310)에 예치하는 예를 나타내고 있다. 이때, 에스크로 송금 함수의 첫 번째 파라미터 "B"는 해당 송금의 수신자인 수신자 B(330)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 해당 송금의 금액을 나타낼 수 있다. "Coin Transfer"는 송신자 A(320)에서 에스크로 컨트랙트(310)로 기준 통화의 송금이 이루어지는 과정을 나타낼 수 있다.
도 4는 에스크로 컨트랙트(310)에 정의된 에스크로 수신 함수("escrowReceive()")가 호출됨에 따라 예치된 돈이 에스크로 컨트랙트(310)에 명시된 수신자 B(330)에게 송금되는 예를 나타내고 있다. 일례로, 에스크로 수신 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 에스크로 수신 함수를 호출할 수 있는 호출자는 에스크로 컨트랙트(310)에 명시되어 있을 수 있다. 이러한 호출자는 수신자 본인이 될 수도 있고, 믿을 수 있는 제3자가 될 수도 있다. 도 4의 실시예에서는 믿을 수 있는 제3자로서 에스크로 컨트랙트(310)의 소유주 또는 개발자인 에스크로 컨트랙트 오너(escrow contract owner, 410)가 호출자로 명시된 예를 나타내고 있다. 에스크로 컨트랙트 오너(410)는 해당 송금에 대해 기 정의된 조건이 만족된 경우, 에스크로 컨트랙트(310)로 에스크로 수신 함수를 호출할 수 있으며, 이에 따라 에스크로 컨트랙트(310)에 예치된 돈이 에스크로 컨트랙트(310)에 명시된 수신자 B(330)에게 송금될 수 있다. 도 4에 나타난 함수 "baseCoinTransfer(B, value)"는 기준 통화를 송금하기 위한 함수로서, 에스크로 컨트랙트(310)가 첫 번째 파라미터 "B"에 의해 식별되는 수신자 B(330)에게 두 번째 파라미터 "value"에 대응하는 기준 통화로서의 돈을 송금하는 함수를 의미할 수 있다.
도 5는 해당 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 에스크로 취소 함수("escrowCancel()")가 호출됨에 따라 송신자 A(320)가 에스크로 컨트랙트(310)에 예치된 금액을 다시 되돌려 받는 예를 나타내고 있다. 일례로, 에스크로 취소 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 에스크로 취소 함수를 호출할 수 있는 호출자는 에스크로 컨트랙트(310)에 명시되어 있을 수 있다. 이러한 호출자는 송신자 본인이 될 수도 있고, 믿을 수 있는 제3자가 될 수도 있다. 도 5의 실시예에서는 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(410)가 호출자로 명시된 예를 나타내고 있다. 에스크로 컨트랙트 오너(410)는 해당 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 에스크로 컨트랙트(310)로 에스크로 취소 함수를 호출할 수 있으며, 이에 따라 에스크로 컨트랙트(310)에 예치된 돈이 송신자 A(320)에게 송금될 수 있다. 도 5에 나타난 함수 "baseCoinTransfer(A, value)"는 기준 통화를 송금하기 위한 함수로서, 에스크로 컨트랙트(310)가 첫 번째 파라미터 "A"에 의해 식별되는 송신자 A(320)에게 두 번째 파라미터 "value"에 대응하는 기준 통화로서의 돈을 송금하는 함수를 의미할 수 있다.
토큰에 대한 에스크로 거래도 앞서 도 3 내지 도 5를 통해 설명한 기준 통화에 대한 에스크로 거래와 유사한 흐름을 갖는다. 다만, 토큰은 특정 스마트 컨트랙트에 종속되어 있기 때문에, 토큰의 송금을 위해서는 에스크로 컨트랙트의 함수들 이외에 토큰 컨트랙트의 함수도 호출되어야 한다. 이하에서는 토큰에 대한 에스크로 거래를 수행할 수 있는 세 가지 방법을 설명한다.
도 6 내지 도 8은 본 발명의 일실시예에 있어서, 토큰에 대한 에스크로 거래의 제1 예를 도시한 도면들이다. 블록체인 시스템(300)에 설치 및 구동되는 디앱(Decentralized Application, DApp, 600)은 블록체인 기술을 활용하여 중앙 서버 없이 네트워크상에 정보를 분산, 저장 및 구동하는 어플리케이션일 수 있다. 디앱(600)에는 에스크로 컨트랙트(610)와 토큰이 종속되어 있는 특정 스마트 컨트랙트(이하, '토큰 컨트랙트(620)')가 포함될 수 있다.
도 6은 송신자 A(320)가 수신자 B(320)에게 토큰으로서의 돈을 송금하기 위해, 먼저 에스크로 컨트랙트(610)에 돈을 예치하는 과정의 예를 나타내고 있다. 이때, 송신자 A(320)는 토큰이 종속된 토큰 컨트랙트(620)로 승인 함수("approve()")를 이용하여 송금의 승인을 요청하고, 에스크로 컨트랙트(610)로도 에스크로 송금 함수("escrowTransfer()")를 통해 예치를 요청할 수 있다.
승인 함수의 첫 번째 파라미터는 송금 대상자를 의미할 수 있다. 이때, 에스크로 컨트랙트(610)에 돈이 예치가 되야 한다. 다시 말해, 송신자 A(320)가 호출하는 토큰 컨트랙트(620)의 승인 함수의 첫 번째 파라미터 "escrowContractAddress"는 토큰 컨트랙트(620)에서 에스크로 컨트랙트(610)로 돈을 송금할 수 있도록 토큰 컨트랙트(620)가 에스크로 컨트랙트(610)를 식별할 수 있는 주소를 의미할 수 있다. 승인 함수의 두 번째 파라미터 "value"는 송금의 금액을 나타낼 수 있으며, 세 번째 파라미터 "currentAllowance"는 현재까지 송금 가능하도록 승인된 돈의 양을 의미할 수 있다.
한편, 에스크로 송금 함수의 첫 번째 파라미터 "B"는 해당 송금의 실제 수신자인 수신자 B(320)를 나타낼 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 나타낼 수 있다. 에스크로 컨트랙트(610)는 에스크로 송금 함수의 호출에 응답하여 토큰 컨트랙트(620)로 송금을 요청할 수 있다. 함수 "transferFrom()"에서 첫 번째 파라미터 "A"는 송신자 A(320)를, 두 번째 파라미터 "escrowContractAddress"는 에스크로 컨트랙트(610)를, 세 번째 파라미터 "value"는 송금의 금액을 각각 의미할 수 있다. 다시 말해, 에스크로 컨트랙트(610)는 토큰 컨트랙트(620)로 송신자 A(320)의 돈을 에스크로 컨트랙트(610)로 송금할 것을 토큰 컨트랙트(620)로 요청할 수 있다. 이 경우, 토큰 컨트랙트(620)는 송신자 A(320)가 승인 함수를 통해 승인한 금액(에스크로 컨트랙트(610)가 송금 요청한 금액) 이내에서 함수 "transferFrom()"에 의해 요청된 금액을 에스크로 컨트랙트(610)로 송금(실질적으로는 대응하는 토큰의 소유주를 송신자 A(320)에서 에스크로 컨트랙트(610)로 변경)함으로써, 에스크로 컨트랙트(610)에 송신자 A(320)의 돈이 예치되도록 할 수 있다. 도 6에서 "Token Transfer"는 토큰 컨트랙트(620)가 토큰을 에스크로 컨트랙트(610)로 송금하는 과정을 나타낼 수 있다.
도 7은 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(620)가 해당 송금에 대해 기 정의된 조건이 만족됨에 따라 에스크로 컨트랙트(610)에 정의된 에스크로 수신 함수("escrowReceive()")를 호출하는 예를 나타내고 있다. 이때, 에스크로 수신 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 이 경우, 에스크로 컨트랙트(610)는 토큰 컨트랙트(620)로 송금 함수("transfer()")를 호출함으로써, 예치된 돈이 수신자 B(330)에게 송금되도록 할 수 있다. 이때, 송금 함수의 첫 번째 파라미터 "B"는 송금의 대상인 수신자 B(330)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 의미할 수 있다. 이때, 토큰 컨트랙트(620)는 에스크로 컨트랙트(610)가 예치하고 있는 토큰의 소유자를 수신자 B(330)로 변경함으로써, 에스크로 컨트랙트(610)에 예치된 돈을 수신자 B(330)에게로 송금시킬 수 있다. 도 7에서 "Token Transfer"는 에스크로 컨트랙트(610)가 수신자 B(330)에게 송신자 A(320)가 예치한 돈을 송금하는 과정을 나타낼 수 있다.
도 8은 해당 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 에스크로 취소 함수("escrowCancel()")가 호출됨에 따라 송신자 A(320)가 에스크로 컨트랙트(610)에 예치된 금액을 다시 되돌려 받는 예를 나타내고 있다. 일례로, 에스크로 취소 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 에스크로 취소 함수를 호출할 수 있는 호출자는 에스크로 컨트랙트(610)에 명시되어 있을 수 있다. 이러한 호출자는 송신자 본인이 될 수도 있고, 믿을 수 있는 제3자가 될 수도 있다. 도 8의 실시예에서는 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(620)가 호출자로 명시된 예를 나타내고 있다. 에스크로 컨트랙트 오너(620)가 해당 송금에 대한 에스크로 취소 함수를 호출하면, 에스크로 컨트랙트(610)는 토큰 컨트랙트(620)에 정의된 송금 함수("transfer()")를 호출할 수 있다. 이때, 송금 함수의 첫 번째 파라미터 "A"는 송금의 대상인 수신자 A(320)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 의미할 수 있다. 따라서, 토큰 컨트랙트(620)는 에스크로 컨트랙트(610)에 예치된 토큰을 송신자 A(320)의 소유로 변경함으로써, 에스크로 컨트랙트(610)에서 송신자 A(320)로의 송금을 처리할 수 있다. 도 8에서 "Token Transfer"는 에스크로 컨트랙트(610)가 송신자 A(320)에게 송신자 A(320)가 예치한 돈을 되돌려주는 과정을 나타낼 수 있다.
도 6 내지 도 8의 실시예에서 에스크로 컨트랙트(610)는 토큰 컨트랙트(620)의 토큰을 송금받고 송금하는 개별적인 주체로서 동작하기 때문에 에스크로 컨트랙트(610)와 토큰 컨트랙트(620)는 각각 별개의 인터페이스로서 유지될 수 있다.
도 9 내지 도 12는 본 발명의 일실시예에 있어서, 토큰에 대한 에스크로 거래의 제2 예를 도시한 도면들이다. 본 실시예에 따른 디앱(900)은 블록체인 시스템(300)에 설치 및 구동될 수 있으며, 토큰 컨트랙트(910) 및 에스크로 컨트랙트(920)를 포함할 수 있다.
도 9의 실시예에서는 에스크로 컨트랙트 오너(930)가 디앱(900)에 토큰 컨트랙트(910) 및 에스크로 컨트랙트(920)를 설치하는 과정의 예를 나타내고 있다. 이때, 에스크로 컨트랙트 오너(930)는 에스크로 컨트랙트(920)를 디앱(900)에 직접 설치할 수 있으며, 디앱(900)에 이미 설치되어 있는 토큰 컨트랙트(910)에서 컨트랙트를 설치할 때 실행되도록 정의된 함수를 이용하여 토큰 컨트랙트(910)가 에스크로 컨트랙트(920)를 설정하도록 제어할 수 있다. 이 경우, 토큰 컨트랙트(910)는 에스크로 컨트랙트(920)를 설정하고, 토큰 컨트랙트(910)의 주소를 에스크로 컨트랙트(920)에 설정할 수 있다. 예를 들어, 토큰 컨트랙트(910)는 에스크로 컨트랙트 설정 함수("setEscrowContract(escrow_contract_addr=contractAddress1)")를 이용하여 에스크로 컨트랙트(920)를 설정할 수 있으며, 토큰 컨트랙트 주소 설정 함수("TokenContract(token_contract_addr=contractAddress2)")를 이용하여 에스크로 컨트랙트(920)에 토큰 컨트랙트의 주소를 설정할 수 있다. 여기서, 'contractAddress1'은 에스크로 컨트랙트(920)의 주소를, 'contractAddress2'는 토큰 컨트랙트(910)의 주소를 각각 의미할 수 있다.
도 10은 송신자 A(320)가 에스크로 거래를 요청함에 따라 에스크로 컨트랙트(920)에 토큰이 예치되는 과정의 예를 나타내고 있다. 먼저 송신자 A(320)가 토큰 컨트랙트(910)에 정의된 에스크로 송금 함수("escrowTransfer()")를 이용하여 토큰 컨트랙트(910)로 수신자 B(330)로의 송금을 요청하면, 토큰 컨트랙트(910)는 먼저 승인 함수("approve()")를 통해 송금을 승인한 후, 에스크로 컨트랙트(920)로 에스크로 토큰 송금 함수("escrowTokenTransfer()")를 이용하여 송신자 A(320)의 수신자 B(330)로의 송금에 대한 요청을 전달할 수 있다. 승인 함수는 에스크로 컨트랙트(920)로 송금의 금액을 송금하는 것을 승인하기 위해, 에스크로 컨트랙트(920)의 주소와 송금의 금액이 각각 파라미터로 이용될 수 있다. 이 경우, 에스크로 컨트랙트(920)는 함수 "transferFrom()"를 이용하여 토큰 컨트랙트(910)로 에스크로 컨트랙트(920)로의 송금을 요청할 수 있다. 함수 "transferFrom()"의 첫 번째 파라미터 "ES"는 에스크로 컨트랙트(920)의 주소를 나타낼 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 나타낼 수 있다. 도 10에서 "Token Transfer"는 송신자 A(320)가 수신자 B(330)로 송금하고자 하는 토큰이 에스크로 컨트랙트(920)로 송금(실질적으로는 토큰 컨트랙트(910)에서 해당 토큰의 소유주가 송신자 A(320)에서 에스크로 컨트랙트(920)로 변경)되어 에스크로 컨트랙트(920)에 예치됨을 의미할 수 있다.
도 11은 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(930)가 해당 송금에 대해 기 정의된 조건이 만족됨에 따라 에스크로 컨트랙트(920)에 정의된 에스크로 수신 함수("escrowReceive()")를 호출하는 예를 나타내고 있다. 이때, 에스크로 수신 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 이 경우, 에스크로 컨트랙트(920)는 토큰 컨트랙트(910)에 정의된 송금 함수("transfer()")를 호출할 수 있다. 이때, 송금 함수의 첫 번째 파라미터 "B"는 송금의 대상인 수신자 B(330)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 의미할 수 있다. 따라서, 토큰 컨트랙트(910)는 에스크로 컨트랙트(920)의 토큰의 소유주를 수신자 B(330)로 변경함으로써, 에스크로 컨트랙트(920)에서 수신자 B(330)로 예치된 돈이 송금될 수 있다. 도 11에서 "Token Transfer"는 에스크로 컨트랙트(920)가 수신자 B(330)에게 송신자 A(320)가 예치한 돈을 송금하는 과정을 나타낼 수 있다.
도 12는 해당 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 에스크로 취소 함수("escrowCancel()")가 호출됨에 따라 송신자 A(320)가 에스크로 컨트랙트(920)에 예치된 금액을 다시 되돌려 받는 예를 나타내고 있다. 일례로, 에스크로 취소 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 에스크로 취소 함수를 호출할 수 있는 호출자는 에스크로 컨트랙트(920)에 명시되어 있을 수 있다. 이러한 호출자는 송신자 본인이 될 수도 있고, 믿을 수 있는 제3자가 될 수도 있다. 도 12의 실시예에서는 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(930)가 호출자로 명시된 예를 나타내고 있다. 에스크로 컨트랙트 오너(930)가 해당 송금에 대한 에스크로 취소 함수를 호출하면, 에스크로 컨트랙트(920)는 토큰 컨트랙트(910)에 정의된 송금 함수("transfer()")를 호출할 수 있다. 이때, 송금 함수의 첫 번째 파라미터 "A"는 송금의 대상인 수신자 A(320)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 의미할 수 있다. 이 경우, 토큰 컨트랙트(910)는 에스크로 컨트랙트(920)의 토큰의 소유주를 송신자 A(320)로 변경함으로써, 예치된 금액이 반환되도록 할 수 있다. 도 12에서 "Token Transfer"는 에스크로 컨트랙트(920)가 송신자 A(320)에게 송신자 A(320)가 예치한 돈을 되돌려주는 과정을 나타낼 수 있다.
도 9 내지 도 12의 실시예에서 에스크로 컨트랙트(920)를 지원하는 토큰 컨트랙트(910)를 이용함으로써, 송신자 A(320)가 하나의 트랜잭션을 통해 송금할 돈의 예치를 위한 과정을 처리할 수 있게 된다.
도 13 내지 도 16은 본 발명의 일실시예에 있어서, 토큰에 대한 에스크로 거래의 제3 예를 도시한 도면들이다. 본 실시예에 따른 디앱(1300)은 블록체인 시스템(300)에 설치 및 구동될 수 있으며, 토큰 컨트랙트(1310) 및 에스크로 컨트랙트(1320)를 포함할 수 있다.
도 13의 실시예에서는 에스크로 컨트랙트 오너(930)가 디앱(1300)에 에스크로 컨트랙트(1320)를 설치하는 과정의 예를 나타내고 있다. 이때, 에스크로 컨트랙트 오너(1330)는 에스크로 컨트랙트(1320)에서 컨트랙트를 설치할 때 실행되도록 정의된 함수를 이용하여 에스크로 컨트랙트(1320)를 토큰 컨트랙트(1310)와 연계시킬 수 있다.
도 14는 송신자 A(320)가 에스크로 거래를 요청함에 따라 에스크로 컨트랙트(1320)에 토큰이 예치되는 과정의 예를 나타내고 있다. 먼저 송신자 A(320)는 토큰 컨트랙트(1310)에 정의된 송금 함수("transfer()")를 이용하여 토큰 컨트랙트(1310)로 에스크로 컨트랙트(1320)로의 송금을 요청할 수 있다. 여기서, 송금 함수의 첫 번째 파라미터는 "escrow_token_addr=contractAddress1"와 같이 에스크로 컨트랙트(1320)의 주소일 수 있다. 또한, 송금 함수의 두 번째 파라미터는 "value"와 같이 송금할 금액일 수 있다. 또한, 송금 함수의 세 번째 파라미터는 "0x+'transferid:toAddress:memo"와 같이 에스크로와 관련된 메타 정보(수신자, 메모)를 나타낼 수 있다. 토큰 컨트랙트(1310)는 수신자가 EOA(Externally Owned Wallet)이 아닌 CA(Contract Address)일 경우, 해당 CA에 대응하는 컨트랙트(본 실시예에서는 에스크로 컨트랙트(1320))에 정의되어 있는 토큰 폴백 함수("tokenFallback()")를 호출할 수 있으며, 이때 앞서 설명한 메타 정보가 토큰 폴백 함수의 데이터 필드에 바이트 형태로 들어갈 수 있다. 이 경우, 에스크로 컨트랙트(1320)는 메타 정보를 파싱하여 에스크로 로직을 수행함으로써, 송신자 A(320)로부터 송금되는 돈을 예치할 수 있다. 여기서, "Token Transfer"는 송신자 A(320)가 수신자 B(330)로 송금하고자 하는 토큰이 에스크로 컨트랙트(920)로 송금되어 예치됨을 의미할 수 있다. 함수 "escrow_token_transfer()"는 토큰 폴백 함수 내에서 호출되어 에스크로 컨트랙트(920)에 송금의 수신자를 기록하고 데이터 확인(data validation)을 처리하는 등의 후처리를 위한 함수일 수 있다.
도 15는 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(1330)가 해당 송금에 대해 기 정의된 조건이 만족됨에 따라 에스크로 컨트랙트(1320)에 정의된 에스크로 수신 함수("escrowReceive()")를 호출하는 예를 나타내고 있다. 이때, 에스크로 수신 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 이 경우, 에스크로 컨트랙트(1320)는 토큰 컨트랙트(1310)에 정의된 송금 함수("transfer()")를 호출할 수 있다. 이때, 송금 함수의 첫 번째 파라미터 "B"는 송금의 대상인 수신자 B(330)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 의미할 수 있다. 따라서, 토큰 컨트랙트(1310)는 에스크로 컨트랙트(920)의 토큰의 소유주를 수신자 B(330)로 변경함으로써, 에스크로 컨트랙트(920)에 예치된 돈이 수신자 B(330)로 송금되도록 처리할 수 있다. 도 15에서 "Token Transfer"는 에스크로 컨트랙트(1320)가 수신자 B(330)에게 송신자 A(320)가 예치한 돈을 송금하는 과정을 나타낼 수 있다.
도 16은 해당 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 에스크로 취소 함수("escrowCancel()")가 호출됨에 따라 송신자 A(320)가 에스크로 컨트랙트(920)에 예치된 금액을 다시 되돌려 받는 예를 나타내고 있다. 일례로, 에스크로 취소 함수에는 해당 송금을 식별하기 위한 파라미터가 포함될 수 있다. 에스크로 취소 함수를 호출할 수 있는 호출자는 에스크로 컨트랙트(1320)에 명시되어 있을 수 있다. 이러한 호출자는 송신자 본인이 될 수도 있고, 믿을 수 있는 제3자가 될 수도 있다. 도 16의 실시예에서는 믿을 수 있는 제3자로서 에스크로 컨트랙트 오너(1330)가 호출자로 명시된 예를 나타내고 있다. 에스크로 컨트랙트 오너(1330)가 해당 송금에 대한 에스크로 취소 함수를 호출하면, 에스크로 컨트랙트(1320)는 토큰 컨트랙트(1310)에 정의된 송금 함수("transfer()")를 호출할 수 있다. 이때, 송금 함수의 첫 번째 파라미터 "A"는 송금의 대상인 수신자 A(320)의 식별자일 수 있으며, 두 번째 파라미터 "value"는 송금의 금액을 의미할 수 있다. 따라서, 토큰 컨트랙트(1310)는 에스크로 컨트랙트(1320)의 토큰의 소유주를 송신자 A(320)로 변경함으로써, 에스크로 컨트랙트(1320)에 예치된 돈을 송신자 A(320)로 반환할 수 있다. 도 16에서 "Token Transfer"는 에스크로 컨트랙트(1320)가 송신자 A(320)에게 송신자 A(320)가 예치한 돈을 되돌려주는 과정을 나타낼 수 있다.
도 13 내지 도 16의 실시예에서는 토큰 컨트랙트(1310)의 스펙의 변경 없이 에스크로 컨트랙트(1320)의 추가만으로 에스크로 거래를 처리할 수 있게 된다. 예를 들어, 토큰 컨트랙트(1310)가 에스크로 컨트랙트(1320)를 별도로 인지하기 위한 과정이 필요하지 않게 된다. 또한, 송신자 A(320)가 하나의 트랜잭션을 통해 송금할 돈의 예치를 위한 과정을 처리할 수 있게 된다.
송금에 대한 조건은, 조건을 설정하는 사람과 경우에 따라 다양하게 정의될 수 있다. 일례로, 송신자가 송금의 진행을 요청하는 것이 조건을 만족하는 것으로 간주되거나 또는 송신자가 송금의 취소를 요청하는 것이 조건을 만족하지 않는 것으로 간주될 수 있다. 그 외에도, 일정한 시간이 지난 후에 송금이 진행되도록 하거나 또는 특정 날짜에 송금이 진행되도록 하는 등 조건은 다양하게 정의될 수 있다.
또한, 이상에서 사용된 approve(), transfer(), transferFrom(), fallback() 등의 함수들은 이더리움에서 기본이 되는 토큰 표준인 ERC-20(Ethereum Request for Comments-20) 인터페이스를 기본으로 할 수 있다.
도 17은 본 발명의 일실시예에 따른 에스크로 거래 방법의 예를 도시한 흐름도이다. 본 실시예에 따른 에스크로 거래 방법은 블록체인 시스템(300)이 포함하는 에스크로 컨트랙트에 의해 수행될 수 있으며, 실질적으로는 이러한 에스크로 컨트랙트의 코드를 실행하는 컴퓨터 장치(200)의 프로세서(200)에 의해 수행될 수 있다. 이 경우, 컴퓨터 장치(200)의 프로세서(220)는 메모리(210)가 포함하는 운영체제의 코드나 적어도 하나의 컴퓨터 프로그램의 코드(일례로, 에스크로 컨트랙트의 코드)에 따른 제어 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(220)는 컴퓨터 장치(200)에 저장된 코드가 제공하는 제어 명령에 따라 컴퓨터 장치(200)가 도 17의 방법이 포함하는 단계들(1710 내지 1740)을 수행하도록 컴퓨터 장치(200)를 제어할 수 있다.
단계(1710)에서 컴퓨터 장치(200)는 송신자로부터 수신자로의 에스크로 거래에 대해 블록체인 시스템이 포함하는 에스크로 컨트랙트에 송신자의 송금에 대응하는 통화를 예치할 수 있다.
이미 설명한 바와 같이, 블록체인 시스템에서 송신자의 송금에 대응하는 통화는 블록체인 시스템의 기준 통화 또는 블록체인 시스템이 더 포함하는 토큰 컨트랙트에 종속된 토큰을 포함할 수 있다. 이때, 송신자의 송금에 대응하는 통화가 블록체인 시스템의 기준 통화인 경우, 컴퓨터 장치(200)는 송신자의 송금에 대응하는 기준 통화를 직접 에스크로 컨트랙트에 예치시킬 수 있다. 반면, 송신자의 송금에 대응하는 통화가 특정 토큰 컨트랙트에 종속된 토큰인 경우에는 아래의 실시예들에서와 같이 토큰 컨트랙트를 통해 송신자의 송금에 대응하는 토큰을 에스크로 컨트랙트에 예치시킬 수 있다.
일실시예로, 컴퓨터 장치(200)는 단계(1710)에서 송신자로부터 승인을 요청받은 블록체인 시스템의 토큰 컨트랙트로 통화의 송금을 요청하고, 토큰 컨트랙트로부터 토큰 컨트랙트에 종속되고 송신자의 요청에 따라 승인된 토큰을 송금받아 송신자의 송금에 대응하는 통화로서 에스크로 컨트랙트에 예치할 수 있다. 앞서 도 6을 통해 본 실시예에 따른 예치 방법을 자세히 설명한 바 있다.
다른 실시예로, 컴퓨터 장치(200)는 단계(1710)에서 송신자로부터 에스크로 송금을 요청받은 블록체인 시스템의 토큰 컨트랙트로부터, 에스크로 토큰 송금 요청을 수신하고, 에스크로 토큰 송금 요청에 응답하여 토큰 컨트랙트로 송금을 요청하고, 토큰 컨트랙트로의 요청에 따라 송금된 토큰을 송신자의 송금에 대응하는 통화로서 에스크로 컨트랙트에 예치할 수 있다. 앞서 도 10을 통해 본 실시예에 따른 예치 방법을 자세히 설명한 바 있다. 한편, 본 실시예를 위한 에스크로 컨트랙트의 설치 과정에서, 컴퓨터 장치(200)는 에스크로 컨트랙트의 오너(owner)로부터의 요청에 따라 상기 에스크로 컨트랙트를 설치하고, 에스크로 컨트랙트 오너로부터의 요청에 따라 토큰 컨트랙트에 에스크로 컨트랙트를 설정할 수 있으며, 토큰 컨트랙트의 제어에 따라 에스크로 컨트랙트에 토큰 컨트랙트를 설정할 수 있다. 이 경우, 에스크로 컨트랙트와 토큰 컨트랙트는 서로 연계되어 토큰 컨트랙트가 에스크로 컨트랙트를 인지할 수 있게 된다.
또 다른 실시예로, 컴퓨터 장치(200)는 단계(1710)에서 송신자로부터 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 거래와 관련된 메타 정보가 포함된 토큰 폴백 요청을 수신하고, 메타 정보를 파싱하여 얻어지는 에스크로 거래에 대한 정보를 통해 송신자로부터 송신자의 송금에 대응하는 통화로서 토큰 컨트랙트에 종속된 토큰을 송금받아 에스크로 컨트랙트에 예치할 수 있다. 앞서 도 14를 통해 본 실시예에 따른 예치 방법을 자세히 설명한 바 있다. 이 경우, 본 실시예를 위한 에스크로 컨트랙트의 설치 과정에서, 컴퓨터 장치(200)는 에스크로 컨트랙트의 오너로부터의 요청에 따라 상기 에스크로 컨트랙트를 설치하고, 에스크로 컨트랙트 오너로부터의 요청이 포함하는 토큰 컨트랙트의 주소에 따라 에스크로 컨트랙트를 토큰 컨트랙트와 연계시킬 수 있다. 이 경우, 토큰 컨트랙트는 스펙에 변화가 없으며 에스크로 컨트랙트를 별도로 인지하는 과정을 거칠 필요가 없게 된다.
단계(1720)에서 컴퓨터 장치(200)는 송신자의 송금에 대해 기 정의된 조건이 만족되는지 여부를 결정할 수 있다. 이때, 기 정의된 조건이 만족된 경우, 컴퓨터 장치(200)는 단계(1730)를 수행할 수 있고, 기 정의된 조건이 만족되지 않은 경우, 컴퓨터 장치(200)는 단계(1740)를 수행할 수 있다. 실질적으로, 기 정의된 조건이 만족되는지 여부는 에스크로 컨트랙트에 명시된 호출자에 의해 이루어질 수 있으며, 호출자는 기 정의된 조건이 만족된 경우 에스크로 수신 함수를, 기 정의된 조건이 만족되지 않은 경우 에스크로 취소 함수를 각각 호출할 수 있다. 다시 말해, 컴퓨터 장치(200)는 에스크로 수신 함수가 호출되는 경우에는 기 정의된 조건이 만족된 것으로 결정할 수 있으며, 에스크로 취소 함수가 호출되는 경우에는 기 정의된 조건이 만족되지 않은 것으로 결정할 수 있다.
단계(1730)에서 컴퓨터 장치(200)는 에스크로 컨트랙트에 예치된 통화를 수신자에게 송금할 수 있다. 일례로, 컴퓨터 장치(200)는 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우에 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 수신 요청에 따라, 블록체인 시스템의 토큰 컨트랙트로 에스크로 컨트랙트로부터 수신자로의 송금을 요청할 수 있다. 앞서 도 7, 도 11 및 도 15를 통해 이러한 수신자로의 송금에 대해 자세히 설명한 바 있다.
단계(1740)에서 컴퓨터 장치(200)는 에스크로 컨트랙트에 예치된 통화를 송신자에게 반환할 수 있다. 일례로, 컴퓨터 장치(200)는 송신자의 송금에 대해 기 정의된 조건이 만족되지 않은 경우에 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 취소 요청에 따라, 블록체인 시스템의 토큰 컨트랙트로 에스크로 컨트랙트로부터 송신자로의 송금을 요청할 수 있다. 앞서 도 8, 도 12 및 도 16을 통해 예치된 통화의 송신자로의 반환을 자세히 설명한 바 있다.
한편, 단계(1730) 및 단계(1740)에서 호출자는 에스크로 컨트랙트의 오너 또는 송신자일 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 스마트 컨트랙트에 거래가 성립되기 위한 조건을 명시함으로써 즉각적인 송금이 되지 않고, 돈을 예치해둔 후 특정 조건이 만족되었을 때 수신자에게 송금을 처리할 수 있다. 또한, 특정 조건의 만족 여부에 따라 송금자가 송금을 취소할 수 있다. 또한, 스마트 컨트랙트는 소스코드가 블록체인 네트워크상에 투명하게 공개되기 때문에 사용자들이 어떤 로직으로 에스크로 기능이 동작하는지 투명하게 알 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (19)

  1. 블록체인 시스템의 에스크로 거래 방법에 있어서,
    송신자로부터 수신자로의 에스크로 거래에 대해 상기 블록체인 시스템이 포함하는 에스크로 컨트랙트에 상기 송신자의 송금에 대응하는 통화를 예치하는 단계;
    상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 수신자에게 송금하는 단계; 및
    상기 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 송신자에게 반환하는 단계
    를 포함하는 에스크로 거래 방법.
  2. 제1항에 있어서,
    상기 통화를 예치하는 단계는,
    상기 송신자로부터 승인을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로 상기 통화의 송금을 요청하는 단계; 및
    상기 토큰 컨트랙트로부터 상기 토큰 컨트랙트에 종속되고 상기 송신자의 요청에 따라 승인된 토큰을 송금받아 상기 송신자의 송금에 대응하는 통화로서 상기 에스크로 컨트랙트에 예치하는 단계
    를 포함하는 것을 특징으로 하는 에스크로 거래 방법.
  3. 제1항에 있어서,
    상기 통화를 예치하는 단계는,
    상기 송신자로부터 에스크로 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 토큰 송금 요청을 수신하는 단계;
    상기 에스크로 토큰 송금 요청에 응답하여 상기 토큰 컨트랙트로 송금을 요청하는 단계; 및
    상기 토큰 컨트랙트로의 요청에 따라 송금된 토큰을 상기 송신자의 송금에 대응하는 통화로서 상기 에스크로 컨트랙트에 예치하는 단계
    를 포함하는 것을 특징으로 하는 에스크로 거래 방법.
  4. 제3항에 있어서,
    상기 에스크로 컨트랙트의 오너(owner)로부터의 요청에 따라 상기 에스크로 컨트랙트를 설치하는 단계;
    상기 에스크로 컨트랙트 오너로부터의 요청에 따라 상기 토큰 컨트랙트에 상기 에스크로 컨트랙트를 설정하는 단계; 및
    상기 토큰 컨트랙트의 제어에 따라 상기 에스크로 컨트랙트에 상기 토큰 컨트랙트를 설정하는 단계
    를 더 포함하는 에스크로 거래 방법.
  5. 제1항에 있어서,
    상기 통화를 예치하는 단계는,
    상기 송신자로부터 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 거래와 관련된 메타 정보가 포함된 토큰 폴백 요청을 수신하는 단계; 및
    상기 메타 정보를 파싱하여 얻어지는 에스크로 거래에 대한 정보를 통해 상기 송신자로부터 상기 송신자의 송금에 대응하는 통화로서 상기 토큰 컨트랙트에 종속된 토큰을 송금받아 상기 에스크로 컨트랙트에 예치하는 단계
    를 포함하는 것을 특징으로 하는 에스크로 거래 방법.
  6. 제5항에 있어서,
    상기 에스크로 컨트랙트의 오너로부터의 요청에 따라 상기 에스크로 컨트랙트를 설치하는 단계; 및
    상기 에스크로 컨트랙트 오너로부터의 요청이 포함하는 상기 토큰 컨트랙트의 주소에 따라 상기 에스크로 컨트랙트를 상기 토큰 컨트랙트와 연계시키는 단계
    를 더 포함하는 에스크로 거래 방법.
  7. 제1항에 있어서,
    상기 예치된 통화를 상기 수신자에게 송금하는 단계는,
    상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우에 상기 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 수신 요청에 따라, 상기 블록체인 시스템의 토큰 컨트랙트로 상기 에스크로 컨트랙트로부터 상기 수신자로의 송금을 요청하는 것을 특징으로 하는 에스크로 거래 방법.
  8. 제1항에 있어서,
    상기 예치된 통화를 상기 송신자에게 반환하는 단계는,
    상기 송신자의 송금에 대해 기 정의된 조건이 만족되지 않은 경우에 상기 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 취소 요청에 따라, 상기 블록체인 시스템의 토큰 컨트랙트로 상기 에스크로 컨트랙트로부터 상기 송신자로의 송금을 요청하는 것을 특징으로 하는 에스크로 거래 방법.
  9. 제7항 또는 제8항에 있어서,
    상기 호출자는 상기 에스크로 컨트랙트의 오너 또는 상기 송신자인 것을 특징으로 하는 에스크로 거래 방법.
  10. 제1항에 있어서,
    상기 송신자의 송금에 대응하는 통화는 상기 블록체인 시스템의 기준 통화를 포함하는 것을 특징으로 하는 에스크로 거래 방법.
  11. 제1항에 있어서,
    상기 통화는 상기 블록체인 시스템이 더 포함하는 토큰 컨트랙트에 종속된 토큰을 포함하는 것을 특징으로 하는 에스크로 거래 방법.
  12. 컴퓨터 장치와 결합되어 제1항 내지 제8항, 제10항 또는 제11항 중 어느 한 항의 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  13. 제1항 내지 제8항, 제10항 또는 제11항 중 어느 한 항의 방법을 컴퓨터 장치에 실행시키기 위한 컴퓨터 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록매체.
  14. 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서에 의해,
    송신자로부터 수신자로의 에스크로 거래에 대해 상기 블록체인 시스템이 포함하는 에스크로 컨트랙트에 상기 송신자의 송금에 대응하는 통화를 예치하고,
    상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 수신자에게 송금하고,
    상기 송금에 대해 기 정의된 조건이 만족되지 않는 경우, 상기 에스크로 컨트랙트에 예치된 통화를 상기 송신자에게 반환하는 것
    을 특징으로 하는 컴퓨터 장치.
  15. 제14항에 있어서,
    상기 적어도 하나의 프로세서에 의해,
    상기 송신자로부터 승인을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로 상기 통화의 송금을 요청하고,
    상기 토큰 컨트랙트로부터 상기 토큰 컨트랙트에 종속되고 상기 송신자의 요청에 따라 승인된 토큰을 송금받아 상기 송신자의 송금에 대응하는 통화로서 상기 에스크로 컨트랙트에 예치하는 것
    을 특징으로 하는 컴퓨터 장치.
  16. 제14항에 있어서,
    상기 적어도 하나의 프로세서에 의해,
    상기 송신자로부터 에스크로 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 토큰 송금 요청을 수신하고,
    상기 에스크로 토큰 송금 요청에 응답하여 상기 토큰 컨트랙트로 송금을 요청하고,
    상기 토큰 컨트랙트로의 요청에 따라 송금된 토큰을 상기 송신자의 송금에 대응하는 통화로서 상기 에스크로 컨트랙트에 예치하는 것
    을 특징으로 하는 컴퓨터 장치.
  17. 제14항에 있어서,
    상기 적어도 하나의 프로세서에 의해,
    상기 송신자로부터 송금을 요청받은 상기 블록체인 시스템의 토큰 컨트랙트로부터 에스크로 거래와 관련된 메타 정보가 포함된 토큰 폴백 요청을 수신하고,
    상기 메타 정보를 파싱하여 얻어지는 에스크로 거래에 대한 정보를 통해 상기 송신자로부터 상기 송신자의 송금에 대응하는 통화로서 상기 토큰 컨트랙트에 종속된 토큰을 송금받아 상기 에스크로 컨트랙트에 예치하는 것
    을 특징으로 하는 컴퓨터 장치.
  18. 제14항에 있어서,
    상기 적어도 하나의 프로세서에 의해,
    상기 송신자의 송금에 대해 기 정의된 조건이 만족되는 경우에 상기 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 수신 요청에 따라, 상기 블록체인 시스템의 토큰 컨트랙트로 상기 에스크로 컨트랙트로부터 상기 수신자로의 송금을 요청하는 것
    을 특징으로 하는 컴퓨터 장치.
  19. 제14항에 있어서,
    상기 적어도 하나의 프로세서에 의해,
    상기 송신자의 송금에 대해 기 정의된 조건이 만족되지 않은 경우에 상기 에스크로 컨트랙트에 명시된 호출자로부터 요청되는 에스크로 취소 요청에 따라, 상기 블록체인 시스템의 토큰 컨트랙트로 상기 에스크로 컨트랙트로부터 상기 송신자로의 송금을 요청하는 것
    을 특징으로 하는 컴퓨터 장치.
PCT/KR2019/018156 2019-12-20 2019-12-20 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템 WO2021125399A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/KR2019/018156 WO2021125399A1 (ko) 2019-12-20 2019-12-20 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템
KR1020227017460A KR20220084401A (ko) 2019-12-20 2019-12-20 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템
JP2022537151A JP7478240B2 (ja) 2019-12-20 2019-12-20 ブロックチェーンでスマートコントラクトを利用したエスクロー取引方法およびシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2019/018156 WO2021125399A1 (ko) 2019-12-20 2019-12-20 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템

Publications (1)

Publication Number Publication Date
WO2021125399A1 true WO2021125399A1 (ko) 2021-06-24

Family

ID=76478791

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2019/018156 WO2021125399A1 (ko) 2019-12-20 2019-12-20 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템

Country Status (3)

Country Link
JP (1) JP7478240B2 (ko)
KR (1) KR20220084401A (ko)
WO (1) WO2021125399A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102640622B1 (ko) * 2022-07-21 2024-02-28 주식회사 인피닛블록 디지털 자산 수탁 및 출금 대납 시스템 및 이를 위한 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190251629A1 (en) * 2018-02-14 2019-08-15 Causam Enterprises, Inc. Blockchain instrument for transferable equity
KR20190096220A (ko) * 2018-02-08 2019-08-19 주식회사 케이티 블록체인 기반 안전거래 플랫폼 및 방법
KR20190132159A (ko) * 2018-05-18 2019-11-27 주식회사 비즈모델라인 스마트 컨트랙트를 이용한 블록체인 기반 암호화폐 거래 플랫폼 제공 방법
KR20190136610A (ko) * 2018-05-31 2019-12-10 박덕용 블록체인 기반의 스마트 컨트랙트를 이용한 거래 처리 장치 및 방법
KR20190137064A (ko) * 2018-05-29 2019-12-10 알리바바 그룹 홀딩 리미티드 자산 이전 방법 및 장치, 및 전자 디바이스

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6971019B2 (ja) 2016-09-26 2021-11-24 Gmoインターネット株式会社 データ管理システム、情報処理装置、プログラム、及び、データ管理方法
CA3102606A1 (en) 2018-06-08 2019-12-12 Rocket Lawyer Incorporated Cryptographic contract payment and dispute resolution system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190096220A (ko) * 2018-02-08 2019-08-19 주식회사 케이티 블록체인 기반 안전거래 플랫폼 및 방법
US20190251629A1 (en) * 2018-02-14 2019-08-15 Causam Enterprises, Inc. Blockchain instrument for transferable equity
KR20190132159A (ko) * 2018-05-18 2019-11-27 주식회사 비즈모델라인 스마트 컨트랙트를 이용한 블록체인 기반 암호화폐 거래 플랫폼 제공 방법
KR20190137064A (ko) * 2018-05-29 2019-12-10 알리바바 그룹 홀딩 리미티드 자산 이전 방법 및 장치, 및 전자 디바이스
KR20190136610A (ko) * 2018-05-31 2019-12-10 박덕용 블록체인 기반의 스마트 컨트랙트를 이용한 거래 처리 장치 및 방법

Also Published As

Publication number Publication date
KR20220084401A (ko) 2022-06-21
JP7478240B2 (ja) 2024-05-02
JP2023514007A (ja) 2023-04-05

Similar Documents

Publication Publication Date Title
US20230360036A1 (en) Blockchain-implemented method and system for access control on remote internet-enabled resources
CN110401715B (zh) 资源收集任务管理方法、装置、存储介质及系统
KR101994296B1 (ko) 메신저를 이용한 결재 방법 및 시스템
CN106030528B (zh) 数据代理服务
JP6882924B2 (ja) 互いに異なるユーザ識別体系を利用して登録されたユーザを識別するサーバ間のサービス連動方法、システムおよびコンピュータプログラム
KR20190115652A (ko) 송금 기능이 탑재된 메신저에서 메시지 내용을 인식하여 송금 기능을 제공하는 방법 및 시스템
KR102118178B1 (ko) 블록체인을 위한 다중 트랜잭션 병렬 처리 방법 및 시스템
WO2018080206A1 (ko) Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
JP2021072108A (ja) 共有口座の取引に対する事前承認のためのコンピュータプログラム、方法、および装置
WO2020213763A1 (ko) 블록체인과는 다른 형식의 저장소에 저장되는 블록체인 데이터를 검증하는 방법 및 시스템
WO2018128261A1 (ko) 사용자 활동 정보를 공유하는 방법 및 시스템
CN110766394A (zh) 基于信用度的乘车支付方法、装置、电子设备及存储介质
CN110163691A (zh) 基于区块链的发票创建方法和装置、电子设备
JP2021119544A (ja) トランザクション委任方法、及びトランザクション委任システム
CN107274164A (zh) 一种多渠道第三方移动支付融合转账系统及其方法
WO2020096072A1 (ko) 디앱에서 요구하는 높은 트랜잭션 처리량을 효율적으로 블록체인에서 처리하기 위한 방법 및 시스템
KR20200044167A (ko) 메신저 봇을 이용하여 IoT 기기를 제어하기 위한 방법, 시스템, 및 비-일시적인 컴퓨터 판독가능한 기록 매체
WO2021125399A1 (ko) 블록체인에서의 스마트 컨트랙트를 이용한 에스크로 거래 방법 및 시스템
JP7101292B2 (ja) 支払い方法およびシステム
WO2018080205A1 (ko) Utxo 기반 프로토콜을 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
CN115858182B (zh) 一种应用于元宇宙的边缘计算节点的智能适配方法与系统
JP2020109617A (ja) ブロックチェーンの拡張を可能にするトランザクション処理システムおよび方法
KR20150096190A (ko) 애플리케이션 펀딩서비스를 제공하는 서버, 방법 및 시스템
WO2019240305A1 (ko) 사용 정도에 기초하여 대화방을 처리하는 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체
JP2003044602A (ja) アプリケーション提供装置及びアプリケーション提供方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19956263

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20227017460

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2022537151

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19956263

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 19956263

Country of ref document: EP

Kind code of ref document: A1