KR20210017964A - Method and apparatus for autonomous guarantee verification for p2p loan service based on blockchain - Google Patents
Method and apparatus for autonomous guarantee verification for p2p loan service based on blockchain Download PDFInfo
- Publication number
- KR20210017964A KR20210017964A KR1020190143805A KR20190143805A KR20210017964A KR 20210017964 A KR20210017964 A KR 20210017964A KR 1020190143805 A KR1020190143805 A KR 1020190143805A KR 20190143805 A KR20190143805 A KR 20190143805A KR 20210017964 A KR20210017964 A KR 20210017964A
- Authority
- KR
- South Korea
- Prior art keywords
- key
- authentication
- account
- investor
- borrower
- Prior art date
Links
Images
Classifications
-
- G06Q40/025—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/03—Credit; Loans; Processing thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
Description
본 발명은 블록체인 기술 기반의 사용자 인증키를 통해 정당한 사용자가 요청하는 동작의 수행 여부를 결정하고, 사용자의 요청에 대한 수행이 완료된 것을 증명하면서 요청이 완료되어 발생한 권리를 양도할 수 있는 토큰을 사용자 인증키를 통해 발행하는 기술에 관한 것이다. The present invention determines whether to perform an operation requested by a legitimate user through a user authentication key based on blockchain technology, and provides a token that can transfer the rights arising from the completion of the request while proving that the execution of the user's request has been completed. It relates to a technology issued through a user authentication key.
P2P 대출이란 개인이 금융기관을 거치지 않고 온라인 플랫폼을 통해 대출 계약을 체결하는 것으로서, 투자자를 모집한 후 자금이 필요한 차입자에게 투자의 형식으로 자금을 융통할 수 있도록 하고, 투자자에게 투자 금액에 대한 소정의 이자를 지급 받을 수 있도록 중계하는 P2P 금융 플랫폼 산업이 최근 크게 성장하고 있다. P2P loan is an individual signing a loan contract through an online platform without going through a financial institution. After recruiting investors, it is possible to mobilize funds in the form of investments to borrowers who need the funds. The P2P financial platform industry, which relays so that interest can be paid, is growing significantly.
기존의 금융 대출은 은행이 예금자로부터 지급된 금원을 관리하면서 차입자에게 대출해주는 형태로서 예금자와 차입자 간의 직접적인 상관 관계가 존재하지 않으며 대출금이 회수되지 못하게 되는 리스크는 은행이 부담하게 되는 구조이다. 이와 달리, P2P 금융 플랫폼 산업은 투자자를 모집하여 자금이 필요한 차입자에게 투자의 형식으로 자금을 융통하는 형태로서, 투자자와 차입자 사이에 직접적인 채권/채무 관계가 발생하게 하고, 대출금 회수에 대해 리스크를 지는 기관이 없는 경우가 많다. The existing financial loan is a form in which the bank manages the money paid from the depositor and lends it to the borrower. There is no direct correlation between the depositor and the borrower, and the risk that the loan cannot be recovered is a structure that the bank bears. In contrast, the P2P financial platform industry recruits investors and transfers funds in the form of investments to borrowers in need of funds, which creates a direct bond/debt relationship between investors and borrowers, and takes risks for the recovery of loans. There are often no institutions.
이에 따라, P2P 금융 플랫폼에서는 대출과 관련하여 발생하는 권리/채무와, 이에 수반되는 리스크들이 모두 투자자/차입자에게 직접적으로 발생하기 때문에, 온라인에서 행하여지는 투자자 또는 차입자의 요청들이 정말로 정당한 사용자에 의해 발생한 것인가를 판단하는 것이 매우 중요하다. 만약, 사용자의 요청에 대한 위변조를 정확하게 파악하지 못한 채로 투자자와 차입자의 금전을 융통시키는 경우, 정당한 사용자들에게 금전적인 피해가 발생할 수 있다. Accordingly, in a P2P financial platform, since all rights/liabilities arising from loans and the risks associated with them all occur directly to investors/borrowers, requests from investors or borrowers made online are really made by legitimate users. It is very important to judge whether it is. If the money of investors and borrowers is transferred without accurately grasping the forgery and alteration of the user's request, financial damage may occur to legitimate users.
이처럼 인증 및 위변조 검증이 필요한 분야에서는 최근 블록체인 기술을 접목하려는 시도가 늘고 있다. 하지만, 사용자의 편의성 관점에서 사용자에게는 블록체인에 대한 개념을 알 필요 없이, 온라인 플랫폼 내에서 자동적으로 인증이 진행되고 위변조의 판단을 수행할 수 있도록 하는 것이 중요하다. In such a field that requires authentication and forgery verification, attempts to apply blockchain technology are increasing. However, from the viewpoint of user convenience, it is important for the user to be able to automatically authenticate within the online platform and perform the judgment of forgery without needing to know the concept of the blockchain.
본 문서는 인증 및 위변조 검증에 블록체인 기술을 사용하면서도 사용자 입장에서 블록체인 기술에 대한 인지 없이 서버 및 스마트 컨트랙트가 인증 및 위변조 판단 기능을 자동적으로 수행하는 기술을 제안하고자 한다. This document intends to propose a technology that automatically performs authentication and forgery determination functions by servers and smart contracts without the user's knowledge of the blockchain technology while using blockchain technology for authentication and forgery verification.
본 발명의 실시예에서 해결하고자 하는 과제는 사용자가 직접 블록체인 지갑을 사용하는 일이 없게 하면서도, 인증을 수행하고 위변조를 방지하는 블록체인의 장점을 사용자에게 제공할 수 있는 기술을 구현하고자 한다. The problem to be solved in the embodiment of the present invention is to implement a technology that can provide users with the advantages of a blockchain that performs authentication and prevents forgery, while preventing the user from using the blockchain wallet directly.
또한, P2P 대출에서 발생하는 모든 거래의 자격 증명과 인증을 중계하고, 사용자의 요청에 대한 수행이 완료된 것을 증명하면서 요청이 완료되어 발생한 권리를 양도하는 기술을 구현하는 것이다. In addition, it implements a technology that relays the credentials and authentication of all transactions that occur in P2P loans, proves that the execution of the user's request has been completed, and transfers the rights arising from the completion of the request.
다만, 본 발명의 실시예가 이루고자 하는 기술적 과제는 이상에서 언급한 과제로 제한되지 않으며, 이하에서 설명할 내용으로부터 통상의 기술자에게 자명한 범위 내에서 다양한 기술적 과제가 도출될 수 있다.However, the technical problems to be achieved by the embodiments of the present invention are not limited to the above-mentioned problems, and various technical problems may be derived from the contents to be described below within a range that is obvious to a person skilled in the art.
일 실시예에 따른 블록체인 기반의 서비스 장치가 수행하는 자율보증증명 방법은 사용자의 블록체인 계정을 생성, 상기 사용자의 고유 정보를 암호화한 인증 1키를 생성, 및 상기 인증 1키를 포함하는 정보를 암호화한 TxID를 생성하고 off-chain DB에 저장하는 단계; 상기 TxID를 포함하는 데이터를 상기 장치가 관리하는 블록체인 계정인 OPM(operator master)의 비대칭키로 암호화한 Key Value을 상기 DB에 저장 및 on-chain에 업로드하는 단계; 및 상기 사용자로부터 소정의 동작에 대한 요청을 수신하는 경우, 상기 요청 시점 이후 인증 1키를 재생성하고, 상기 on-chain에 업로드된 Key Value를 기초로 상기 DB에 저장된 Key Value를 검색하고, 상기 검색된 Key Value를 상기 비대칭키의 대응키로 복호화하여 구한 인증 1키와 상기 재생성된 인증 1키를 비교하는 위변조 판단을 기초로 상기 요청에 대한 수행을 결정하는 단계를 포함할 수 있다. The self-guaranteed authentication method performed by a blockchain-based service device according to an embodiment creates a user's blockchain account, generates an
또한, 상기 사용자의 고유 정보는 사용자 ID, 사용자 블록체인 계정 주소, 공개키, 및 사용자 가상계좌 번호를 상기 사용자의 첫 로그인 시간 정보를 비밀키로 하여 SHA 알고리즘을 기초로 암호화한 TokenHolderKey를 포함하고, [TokenHolderKey=SHA{SecretKey(firstLoginTimeStamp)(UserID, AccountAddress, PublicKey, VirtualBankNum)}], 상기 인증 1키는 사용자 ID, 상기 TokenHolderKey 및 상기 TokenHolderKey가 생성된 시간 정보를 함께 SHA 알고리즘을 기초로 암호화하여 생성된 TokenHolderHashKey 를 포함할 수 있다. {TokenHolderHashKey=Hash(UserID, TokenHolderKey, TokenHolderHashKey 생성년월일시간분초)}In addition, the unique information of the user includes a User ID, a user blockchain account address, a public key, and a TokenHolderKey in which the user virtual account number is encrypted based on the SHA algorithm using the first login time information of the user as a secret key, [ TokenHolderKey=SHA{SecretKey(firstLoginTimeStamp)(UserID, AccountAddress, PublicKey, VirtualBankNum)}], the
또한, 상기 사용자는 P2P 대출 서비스를 사용하는 투자자 및 차입자를 포함하고, 상기 요청은 상기 차입자의 대출 요청과 및 상기 대출에 대한 상기 투자자의 투자 실행 요청을 포함하고, 상기 실행을 결정하는 단계는 상기 차입자의 대출 요청을 수신하는 경우, 상기 차입자에 대한 소정의 대출 심사에 기초하여 상기 대출 요청 시점 이후 상기 차입자의 인증 1키를 재생성하고, 상기 차입자에 대한 대출 정보를 생성하는 단계; 상기 대출 요청에 대해 상기 투자자의 투자 요청을 수신하는 경우, 상기 투자 요청 시점 이후 상기 투자자의 인증 1키를 재생성하고, 상기 on-chain에 업로드된 상기 투자자의 Key Value를 기초로 상기 DB에 저장된 상기 투자자의 Key Value를 검색하고 상기 OPM의 비대칭키로 복호화하여 구한 상기 투자자의 인증 1키를, 상기 재생성된 투자자의 인증 1키와 비교하여 위변조 판단하여 상기 대출 정보에 대한 상기 투자자의 투자 계약 여부를 결정하는 단계; 및 상기 대출 요청에 따른 투자 계약이 성립하면, 상기 on-chain에 업로드된 상기 차입자의 Key Value를 기초로 상기 off-chain DB에 저장된 상기 차입자의 Key Value를 검색하고 상기 OPM의 비대칭키로 복호화하여 구한 상기 차입자의 인증 1키를, 상기 재생성된 차입자의 인증 1키와 비교하여 위변조 판단하여, 상기 대출 요청과 관련하여 on-chain에 기록할 차입자 정보 및 상기 투자 요청과 관련하여 on-chain에 기록할 투자자 정보를 생성하는 단계를 포함할 수 있다. In addition, the user includes an investor and a borrower who use a P2P loan service, and the request includes a loan request from the borrower and a request for investment execution of the investor for the loan, and the step of determining the execution includes the Upon receiving a loan request from the borrower, regenerating an
또한, 상기 투자자 정보를 생성하는 단계는 상기 대출 요청에 기 설정된 금액이 상기 투자자의 투자 요청에 의해 모두 모금되는 경우에만 실행되도록 설정될 수 있다. In addition, the step of generating the investor information may be set to be executed only when all of the amount preset in the loan request is raised by the investor's investment request.
또한, 일 실시예는 상기 요청에 대한 수행을 결정하는 단계 이후, 상기 OPM 계정을 통해 상기 요청의 실행을 관리하는 스마트 컨트랙트에 상기 요청이 실행됨에 따른 사용자의 상태를 증명하는 토큰 발행이 수행되도록 하는 트랜잭션을 생성하고 상기 DB에 접근 권한이 있는 블록체인 계정인 OP(operator) 계정을 생성하는 단계; 상기 OPM 계정을 통해 상기 on-chain에 업로드된 Key Value를 복호화하여 구한 인증 1키를 상기 OP 계정에 전송하는 단계; 및 상기 OP 계정이 상기 OPM 계정으로부터 전송 받은 인증 1키와 상기 DB에 저장된 TxID로부터 추출한 인증 1키를 비교하도록 하는 위변조 판단을 기초로 상기 트랜잭션 생성을 결정하는 단계를 더 포함할 수 있다. In addition, in an embodiment, after the step of determining the execution of the request, a token issuance that proves the state of the user when the request is executed is performed to a smart contract that manages the execution of the request through the OPM account. Creating a transaction and creating an OP (operator) account, which is a blockchain account with access rights to the DB; Transmitting an
또한, 일 실시예는 상기 트랜잭션 생성을 결정하는 단계 이후, 상기 OPM 계정이 상기 OP 계정으로부터 상기 인증 1키를 다시 전송받고, 상기 다시 전송 받은 인증 1키를 상기 재생성된 인증 1키와 비교하여 상기 OP 계정이 보유하고 있는 인증 1키의 유효성을 판단하는 단계; 상기 인증 1키가 유효하면, 상기 OPM 계정이 상기 스마트 컨트랙트에 소정 수량의 토큰 발행 트랜잭션을 전송하여 상기 토큰이 상기 OP 계정에 지급되도록 하는 단계; 및 상기 OPM 계정이 상기 OP 계정이 수신한 토큰 개수가 상기 소정 수량과 일치하는 지를 판별하여 일치하는 경우, 상기 OP 계정이 상기 토큰 발행에 대한 사실을 블록에 기록하는 단계를 포함할 수 있다. In addition, in an embodiment, after the step of determining the transaction creation, the OPM account receives the
또한, 일 실시예는 상기 토큰 발행에 대한 사실을 블록에 기록하는 단계 이후, 상기 OP 계정이 보유한 소정의 정보를 기초로 상기 토큰의 전송에 사용되는 인증 2키 생성하고 제1 스마트 컨트랙트에 전송하게 하는 단계; 상기 요청에 대한 수행이 완료된 것으로 판별되면, 상기 DB가 저장한 소정의 정보를 기초로 상기 토큰의 전송에 사용되는 인증 2키 생성하고, 상기 제1 스마트 컨트랙트가 인증 2키를 비교하도록 규약이 정해진 상기 제2 스마트 컨트랙트에, 상기 DB로부터 생성된 인증 2키를 전송하게 하는 단계; 및 상기 제2 스마트 컨트랙트의 비교 결과 상기 인증 2키가 동일한 것으로 정보를 수신하면, 상기 인증 2키를 상기 DB에 저장하고, 상기 사용자에게 토큰을 지급하는 단계를 더 포함하고, 상기 토큰은 상기 사용자의 요청에 대한 수행이 완료된 것을 증명하는 용도로 사용될 수 있다. In addition, in an embodiment, after the step of recording the token issuance in a block,
또한, 상기 OP 계정이 보유한 소정의 정보 및 상기 DB가 저장한 소정의 정보는 각각, 상기 사용자의 공개키, 상기 토큰의 식별 정보, 및 상기 사용자의 인증 1키와, 상기 소정의 정보가 인증 2키 생성 함수로 입력되었을 때의 시간 정보를 포함하고, 상기 인증 2키는 상기 소정의 정보가 상기 OP 계정의 비밀키로 암호화되어 생성될 수 있다. In addition, predetermined information held by the OP account and predetermined information stored by the DB are, respectively, the public key of the user, identification information of the token, and
또한, 일 실시예는 상기 on-chain에 기록할 투자자 정보를 생성하는 단계 이후, 상기 OPM 계정을 통해 상기 요청의 실행을 관리하는 스마트 컨트랙트에 상기 투자 계약에 따른 차입자 및 투자자의 상태를 증명하는 토큰 발행이 수행되도록 하는 트랜잭션을 생성하고 상기 DB에 접근 권한이 있는 블록체인 계정인 OP(operator) 계정을 생성하는 단계; 상기 OPM 계정을 통해 상기 on-chain에 업로드된 상기 투자자의 Key Value를 복호화하여 구한 상기 투자자의 인증 1키를 상기 OP 계정에 전송하고, 상기 OP 계정이 상기 OPM 계정으로부터 전송 받은 상기 투자자의 인증 1키와 상기 DB에 저장된 상기 투자자의 TxID로부터 추출한 인증 1키를 비교하도록 하는 제1 위변조 판단 단계; 상기 OPM 계정을 통해 상기 on-chain에 업로드된 상기 차입자의 Key Value를 복호화하여 구한 상기 차입자의 인증 1키를 상기 OP 계정에 전송하고, 상기 OP 계정이 상기 OPM 계정으로부터 전달받은 상기 차입자의 인증 1키와 상기 DB에 저장된 상기 차입자의 TxID로부터 추출한 인증 1키를 비교하도록 하는 제2 위변조 판단 단계; 및 상기 제1 및 제2 위변조 판단을 기초로 상기 트랜잭션 생성을 결정하는 단계를 더 포함할 수 있다. In addition, in an embodiment, after the step of generating investor information to be recorded in the on-chain, a token that proves the status of the borrower and investor according to the investment contract to a smart contract that manages the execution of the request through the OPM account Creating a transaction for issuance to be performed and creating an OP (operator) account, which is a blockchain account with access rights to the DB; The investor's
또한, 일 실시예는 상기 트랜잭션 생성을 결정하는 단계 이후, 상기 OPM 계정이 상기 OP 계정으로부터 상기 투자자의 인증 1키를 다시 전송받고, 상기 다시 전송 받은 투자자의 인증 1키를 상기 투자자의 재생성된 인증 1키와 비교하여 상기 OP 계정이 보유하고 있는 투자자의 인증 1키의 유효성을 판단하는 단계; 상기 투자자의 인증 1키가 유효하면, 상기 OPM 계정이 상기 스마트 컨트랙트에 소정 수량의 토큰 발행 트랜잭션을 전송하여 제1 토큰이 상기 OP 계정에 지급되도록 하는 단계; 상기 OPM 계정이 상기 OP 계정이 수신한 제1 토큰 개수가 상기 소정 수량과 일치하는 지를 판별하여 일치하는 경우, 상기 OP 계정이 상기 제1 토큰 발행에 대한 사실을 블록에 기록하는 단계; 상기 OPM 계정이 상기 OP 계정으로부터 상기 차입자의 인증 1키를 다시 전송 받고, 상기 다시 전송 받은 차입자의 인증 1키를 상기 차입자의 재생성된 인증 1키와 비교하여 상기 OP 계정이 보유하고 있는 상기 차입자의 인증 1키의 유효성을 판단하는 단계; 상기 차입자의 인증 1키가 유효하면, 상기 OPM 계정이 상기 스마트 컨트랙트에 소정 수량의 토큰 발행 트랜잭션을 전송하여 제2 토큰이 상기 OP 계정에 지급되도록 하는 단계; 및 상기 OPM 계정이 상기 OP 계정이 수신한 제2 토큰 개수가 상기 소정 수량과 일치하는 지를 판별하여 일치하는 경우, 상기 OP 계정이 상기 제2 토큰 발행에 대한 사실을 블록에 기록하는 단계를 더 포함할 수 있다. In addition, in one embodiment, after the step of determining the transaction creation, the OPM account receives the investor's
또한, 일 실시예는 상기 제1 및 제2 토큰 발행에 대한 사실을 블록에 기록하는 단계 이후, 상기 투자자 및 상기 차입자 각각에 대하여, 상기 OP 계정이 보유한 소정의 정보를 기초로 상기 제1 및 제2 토큰의 전송에 사용되는 인증 2키 생성하고 제1 스마트 컨트랙트에 전송하게 하는 단계; 상기 요청에 대한 수행이 완료된 것으로 판별되면, 상기 DB가 저장한 소정의 정보를 기초로 상기 제1 및 제2 토큰의 전송에 사용되는 인증 2키 생성하고, 상기 제1 스마트 컨트랙트가 인증 2키를 비교하도록 규약이 정해진 상기 제2 스마트 컨트랙트에, 상기 DB로부터 생성된 인증 2키를 전송하게 하는 단계; 및 상기 제2 스마트 컨트랙트의 비교 결과 상기 인증 2키가 동일한 것으로 정보를 수신하면, 상기 인증 2키를 상기 DB에 저장하고, 상기 투자자 및 차입자 각각에게 상기 제1 및 제2 토큰을 지급하는 단계를 더 포함하고, 상기 제1 토큰은 상기 투자자의 원리금 수취권을 증명하는 용도로 사용되고, 상기 제2 토큰은 상기 차입자의 대출 채무를 증명하는 용도로 사용될 수 있다. In addition, in an embodiment, after the step of recording the issuance of the first and second tokens in a block, for each of the investor and the borrower, based on predetermined information held by the OP account, the first and second tokens are 2 generating an
또한, 상기 인증 1키는 상기 사용자가 처음으로 로그인한 시간 정보를 비밀키로 사용하여 상기 사용자의 계정 정보를 포함하는 데이터를 암호화하여 생성될 수 있다. In addition, the
또한, 상기 Key Value는 상기 인증 1키를 특정하는 인덱스 번호와 함께 상기 TxID를 OPM의 비밀키 또는 공개키로 암호화하여 생성될 수 있다. In addition, the Key Value may be generated by encrypting the TxID with an index number specifying the
일 실시예에 따른 블록체인 기반의 서비스 장치는 소정의 동작을 수행하도록 하는 명령어들을 저장하는 하나 이상의 메모리; 및 상기 하나 이상의 메모리와 동작 가능 하도록 연결되어 상기 명령어들을 실행하도록 설정된 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는 사용자의 블록체인 계정을 생성, 상기 사용자의 고유 정보를 암호화한 인증 1키를 생성, 및 상기 인증 1키를 포함하는 정보를 암호화한 TxID를 생성하고 off-chain DB에 저장하는 동작; 상기 TxID를 포함하는 데이터를 상기 장치가 관리하는 블록체인 계정인 OPM(operator master)의 비대칭키로 암호화한 Key Value을 상기 DB에 저장 및 on-chain에 업로드하는 동작; 및 상기 사용자로부터 소정의 동작에 대한 요청을 수신하는 경우, 상기 요청 시점 이후 인증 1키를 재생성하고, 상기 on-chain에 업로드된 Key Value를 기초로 상기 DB에 저장된 Key Value를 검색하고, 상기 검색된 Key Value를 상기 비대칭키의 대응키로 복호화하여 구한 인증 1키와 상기 재생성된 인증 1키를 비교하는 위변조 판단을 기초로 상기 요청에 대한 수행을 결정하는 동작을 수행할 수 있다. According to an embodiment, a block chain-based service device may include: one or more memories storing instructions for performing a predetermined operation; And one or more processors connected to be operable with the one or more memories and configured to execute the instructions, wherein the one or more processors create a user's blockchain account and generate an
본 발명의 실시예에 따르면 P2P 대출 행위를 수행함에 있어서, 블록체인 기반의 서비스 장치가 사용자의 블록체인 지갑을 직접 관리하여, 사용자로 하여금 직접 블록체인 지갑을 사용하는 일이 없게 하여 불편을 해소하고, 모든 거래의 자격증명과 인증을 중계하여 블록체인의 장점을 제공하는 효과가 있다. According to an embodiment of the present invention, in performing P2P lending, the blockchain-based service device directly manages the user's blockchain wallet, thereby eliminating the inconvenience by preventing the user from directly using the blockchain wallet. , It has the effect of providing the advantages of blockchain by relaying the credentials and authentication of all transactions.
또한, 사용자의 요청에 대한 수행이 완료된 것을 증명하면서 양도 가능한 사용자 고유 토큰을 발행하여, P2P 대출에 따른 원리금 수취권이나 채무 상태를 증명하면서 사용자의 권리나 채무를 양도할 수 있게 한다. In addition, by issuing a transferable user's own token while proving that the user's request has been completed, it is possible to transfer the user's rights or liabilities while proving the right to receive principal and interest or the status of the debt according to the P2P loan.
나아가 현실 세계에 존재하는 여러 자산 권리를 각종 토큰화된 디지털 자산으로 증명하고 이와 관련된 참여자의 자격증명, 각종 자산의 등록 및 거래 증명에 대한 신뢰할 수 있는 자동화된 공증 기능을 제공할 수 있다.Furthermore, it is possible to prove various asset rights existing in the real world with various tokenized digital assets, and provide a reliable automated notarization function for the relevant participants' credentials, registration of various assets, and proof of transactions.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.In addition to this, various effects that are directly or indirectly identified through this document can be provided.
도 1은 일 실시 예에 따른 블록체인 기반의 P2P 대출 서비스 자율보증증명 장치, 투자자 단말 및 차입자 단말을 포함하는 P2P 대출 시스템과 블록체인 네트워크의 동작 환경을 나타내는 구성도이다.
도 2는 일 실시 예에 따른 블록체인 기반의 P2P 대출 서비스 자율보증증명 장치의 구성 블록도이다.
도 3은 일 실시예에 따라 투자자 관점에서 P2P 서비스가 수행되는 프로세스의 개념도이다.
도 4는 일 실시예에 따라 차입자 관점에서 P2P 서비스가 수행되는 프로세스의 개념도이다.
도 5는 일 실시예에 따른 투자자의 인증에 사용되는 키들을 생성하는 프로세스의 흐름도이다.
도 6은 일 실시예에 따른 투자자의 투자 선택에 따라 인증 1키를 통해 인증되는 프로세스의 흐름도이다.
도 7은 일 실시예에 따라 차입자 대출 요청을 투자자가 선택하여 매칭되기까지 인증 1키를 통해 인증되는 프로세스의 흐름도이다.
도 8은 일 실시예에 따라 투자자의 투자 정보 및 차입자의 대출 정보를 생성하고 스마트 컨트랙트에 업로드하는 프로세스의 흐름도이다.
도 9a, 9b는 일 실시예에 따라 OP 계정에 투자자의 토큰 및 차입자의 토큰을 발행하는 프로세스의 흐름도이다.
도 10a, 10b은 일 실시예에 따라 인증 2키를 생성하고 투자자의 계정 및 차입자의 계정에 토큰을 발행하는 프로세스의 흐름도이다.FIG. 1 is a block diagram showing an operation environment of a block chain-based P2P loan service autonomous guarantee system, a P2P loan system including an investor terminal and a borrower terminal, and a block chain network according to an embodiment.
2 is a block diagram of a block chain-based P2P loan service autonomous guarantee authentication device according to an embodiment.
3 is a conceptual diagram of a process in which a P2P service is performed from an investor perspective according to an embodiment.
4 is a conceptual diagram of a process in which a P2P service is performed from a borrower's perspective according to an embodiment.
5 is a flowchart of a process of generating keys used for authentication of an investor according to an embodiment.
6 is a flowchart of a process of being authenticated through an
7 is a flowchart of a process in which a borrower loan request is authenticated through an
8 is a flowchart of a process of generating investment information of an investor and loan information of a borrower and uploading it to a smart contract according to an embodiment.
9A and 9B are flow charts of a process of issuing an investor's token and a borrower's token to an OP account according to an embodiment.
10A and 10B are flow charts of a process of generating an
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. Advantages and features of the present invention, , and a method of achieving them will become apparent with reference to the embodiments described later in detail together with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various forms, only these embodiments make the disclosure of the present invention complete, and those having ordinary knowledge in the technical field to which the present invention pertains. It is provided to fully inform the person of the scope of the invention.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명은 본 발명의 실시예들을 설명함에 있어 실제로 필요한 경우 외에는 생략될 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.In describing the embodiments of the present invention, detailed descriptions of known functions or configurations will be omitted except when actually necessary in describing the embodiments of the present invention. In addition, terms to be described later are terms defined in consideration of functions in an embodiment of the present invention, which may vary according to the intention or custom of users or operators. Therefore, the definition should be made based on the contents throughout this specification.
도면에 표시되고 아래에 설명되는 기능 블록들은 가능한 구현의 예들일 뿐이다. 다른 구현들에서는 상세한 설명의 사상 및 범위를 벗어나지 않는 범위에서 다른 기능 블록들이 사용될 수 있다. 또한 본 발명의 하나 이상의 기능 블록이 개별 블록들로 표시되지만, 본 발명의 기능 블록들 중 하나 이상은 동일 기능을 실행하는 다양한 하드웨어 및 소프트웨어 구성들의 조합일 수 있다.The functional blocks shown in the drawings and described below are only examples of possible implementations. In other implementations, other functional blocks may be used without departing from the spirit and scope of the detailed description. Also, although one or more functional blocks of the present invention are represented as individual blocks, one or more of the functional blocks of the present invention may be a combination of various hardware and software configurations that perform the same function.
또한 어떤 구성 요소들을 포함한다는 표현은 개방형의 표현으로서 해당 구성 요소들이 존재하는 것을 단순히 지칭할 뿐이며, 추가적인 구성 요소들을 배제하는 것으로 이해되어서는 안 된다.In addition, the expression of including certain constituent elements is an open expression and simply refers to the existence of the constituent elements, and should not be understood as excluding additional constituent elements.
나아가 어떤 구성 요소가 다른 구성 요소에 연결되어 있다거나 접속되어 있다고 언급될 때에는, 그 다른 구성 요소에 직접적으로 연결 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 한다. Further, when a component is connected to or is referred to as being connected to another component, it should be understood that it may be directly connected or connected to the other component, but other components may exist in the middle.
이하에서는 도면들을 참조하여 본 발명의 실시예들에 대해 설명하도록 한다. Hereinafter, embodiments of the present invention will be described with reference to the drawings.
도 1은 일 실시 예에 따른 블록체인 기반의 P2P 대출 서비스 자율보증증명 장치(10)(이하, '서버'로 지칭), 투자자 단말(20) 및 차입자 단말(30)을 포함하는 P2P 대출 시스템(1)과 블록체인 네트워크의 동작 환경을 나타내는 구성도이다.1 is a P2P loan system including a block chain-based P2P loan service autonomous guarantee device 10 (hereinafter referred to as a'server'), an
도 1을 참조하면, P2P 대출 시스템(1)은 블록체인 네트워크와 연동하여 동작할 수 있다. 이하, 일 실시예에 따른 P2P 대출 시스템(1)의 구성에 대하여 먼저 살펴보고, P2P 대출 시스템(1)과 연동되는 블록체인 네트워크의 특징을 설명한다. Referring to FIG. 1, the
P2P 대출 시스템(1)은 서버(10), 투자자 단말(20) 및 차입자 단말(30)을 포함할 수 있다. 서버(10), 투자자 단말(20) 및 차입자 단말(30)은 네트워크를 통해 동작 가능하도록 연결되어 정보를 송수신할 수 있다. 예를 들어, 네트워크는 LAN(local area network), WAN(wide area network), 가상 네트워크, 원격 통신 등의 유무선 통신 네트워크를 포함할 수 있다. The
서버(10)는 금융기관의 중개 기능 없이 차입자의 대출 요청에 대해 투자자의 투자를 이어주는 방식으로 대출을 달성하는 P2P 대출 서비스 기능을 제공할 수 있다. 이러한 P2P 대출 서비스의 기능 속에서, 서버(10)는 투자자 및 차입자 각각에게 블록체인 기술 기반의 인증키를 발급하고, 투자자 및 차입자에 의해 발생하는 요청의 동작의 수행 여부를 인증키를 통해 결정할 수 있다. 더하여, 투자자 및 차입자의 요청이 수행되면, 각각에게 고유의 토큰을 발행하여, 투자자 및 차입자의 요청에 대한 수행이 완료된 것을 증명하면서 요청이 완료되어 발생한 권리를 양도할 수 있게 한다. The
이러한 기능은 서버(10)가 제공하는 온라인 플랫폼을 통해 수행될 수 있으며, 온라인 플랫폼은 투자자 및 차입자가 각각의 단말(20, 30)을 통해 접속할 수 있다. This function can be performed through an online platform provided by the
투자자 단말(20)은 투자자가 사용하는 단말이다. 투자자는 서버(10)가제공하는 온라인 플랫폼에 게시된 차입자의 대출 요청 리스트를 확인하여 원하는 대출 조건에 투자하고 기 설정된 이자율에 따라 수익을 실현할 수 있다. 또한, 투자자는 대출 조건에 투자하는 경우 원리금 수취권이라는 권리가 생성되고, 본 발명의 실시예에서는 원리금 수취권이 투자자 고유의 토큰으로 구현되어 제3자에게 양도될 수 있다. The
차입자 단말(30)은 차입자가 사용하는 단말이다. 차입자는 서버(10)가제공하는 온라인 플랫폼에 대출을 신청하여 소정의 심사 조건을 통과하면, 온라인 플랫폼에 자신의 대출 조건을 게시할 수 있다. 대출 조건은 대출 금액, 대출 기간, 이자율의 정보를 포함할 수 있다. 이러한 대출 조건은 소정의 기간 안에 1인 이상의 투자자들이 투자를 실행하여 대출 금액을 달성하면, 해당 차입자의 대출 조건에 따라 투자자와 연결되어 대출이 성립된 것으로 볼 수 있다. 또한, 차입자는 대출에 성공하는 경우 채무 의무가 생성되고, 본 발명의 실시예에서는 채무 의무가 차입자 고유의 토큰으로 구현되어 제3자에게 양도될 수 있다.The
이하, '투자자 및 차입자'를 통칭할 경우 '사용자'라 지칭하며, '투자자 단말(20) 및 차입자 단말(30)'을 통칭할 경우 '사용자 단말'로 지칭하기로 한다. Hereinafter, when'investors and borrowers' are collectively referred to as'users',
서버(10) 및 사용자 단말(20, 30)은 네트워크를 통해 정보를 송수신할 수 있는 다양한 형태의 장치로 구현될 수 있다. 예를 들면, 휴대용 통신 장치(예: 스마트 폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 노트북, 태블릿 PC 등을 포함할 수 있다.The
블록체인 네트워크는 유무선 통신망 네트워크를 통해 P2P 대출 시스템(1)과 연동되며 P2P 대출 시스템(1)에서 발생하는 데이터를 처리할 수 있다. 블록체인 네트워크는 블록체인 구조의 분산 데이터베이스를 구현하는 P2P 네트워크 시스템으로 이해될 수 있다. The blockchain network is interlocked with the P2P loan system (1) through a wired and wireless communication network network and can process data generated by the P2P loan system (1). Blockchain network can be understood as a P2P network system that implements a distributed database of a block chain structure.
블록체인 네트워크는 서로 연결된 복수 개의 컴퓨팅 장치(이하, '노드')들을 포함하는 P2P 네트워크로 이해될 수 있고, 각각의 노드는 하나 이상의 프로세서를 포함하여 연산을 수행할 수 있다. P2P 대출 시스템(1)에 참여하는 서버(10) 및 사용자는 블록체인 네트워크에 등록된 블록체인 계좌 정보를 가질 수 있다. 블록체인 네트워크는 다양한 노드가 제한없이 참여할 수 있는 퍼블릭 블록체인 및 허가 받은 노드만 참여가 가능하고 노드에 따른 권한이 나눠진 허가형 블록체인의 형태를 포함할 수 있다. The blockchain network may be understood as a P2P network including a plurality of computing devices (hereinafter referred to as'nodes') connected to each other, and each node may include one or more processors to perform operations. The
블록체인 계좌 정보는 비밀키(private key)와 공개키(public key)를 포함할 수 있다. 비밀키는, 블록체인 네트워크에서 트랜잭션(예: 제1 사용자 계정(지갑)으로부터 제2 사용자 계정으로 '디지털 지급수단'이 이체되도록 하는 트랜잭션, 스마트 컨트랙트를 블록체인 네트워크 상에 배포하는 트랜잭션, 스마트 컨트랙트를 실행시키는 트랙잭션 등)이 발생하도록 하기 위한 사용자의 디지털 서명으로 기능할 수 있다. 공개 키는 사용자의 계정 주소(account address)로 기능할 수도 있다. Blockchain account information may include a private key and a public key. The secret key is a transaction in the blockchain network (e.g., a transaction that allows the'digital payment method' to be transferred from a first user account (wallet) to a second user account, a transaction that distributes a smart contract on the blockchain network, and a smart contract) It can function as a digital signature of the user to cause the transaction to execute the command to occur. The public key can also function as the user's account address.
비밀키 및 공개키를 이용한 암호화 및 복호화에 대해 설명하도록 한다. 어떤 암호화된 데이터가 있다고 가정할 때, 상기 암호화된 데이터가 특정 비밀키를 이용하여 암호화된 것인지를 검증해야 할 필요가 있을 수 있다. 이때, 비밀키에 대응되는 블록체인 주소를 이용하면 이와 같은 검증이 가능하며, 이러한 검증에는 공개키 기반 구조(public key infrastructure, PKI)에 기초한 방식이 사용될 수 있다.Encryption and decryption using private and public keys will be described. Assuming that there is some encrypted data, it may be necessary to verify whether the encrypted data is encrypted using a specific secret key. At this time, such verification is possible by using a block chain address corresponding to the secret key, and a method based on a public key infrastructure (PKI) may be used for such verification.
보다 구체적으로, 비밀키를 이용하여 암호화된 데이터를, 비밀키와 대응되는 공개키를 이용하여 복호화할 경우, 소정의 값과 동일한 값이 도출된다면 암호화된 데이터가 특정 비밀키를 이용하여 암호화된 것이라고 판단할 수 있으며, 이와 반대로 소정의 값과 동일한 값이 도출되지 않는다면 암호화된 데이터가 특정 비밀키를 이용하여 암호화된 것이 아니라고 판단할 수 있다. More specifically, if data encrypted using a private key is decrypted using a public key corresponding to the private key, if a value equal to a predetermined value is derived, the encrypted data is said to have been encrypted using a specific private key. Conversely, if a value equal to a predetermined value is not derived, it may be determined that the encrypted data is not encrypted using a specific secret key.
따라서, 비밀키를 이용한 암호화를 "서명", 공개키를 이용한 복호화를 해당 서명의 "검증"이라고 각각 칭할 수 있다. 특정 비밀키를 통한 서명의 검증은, 해당 비밀키에 대응되는 공개키를 이용한 복호화를 통해서만 가능하도록 할 수 있다. 이와 같은 알고리즘은 "비대칭키 암호화 알고리즘"이라 칭해지며, 구체적으로는 RSA, ECDSA 등의 알고리즘이 사용될 수 있다. Accordingly, encryption using a private key may be referred to as "signature", and decryption using a public key may be referred to as "verification" of the corresponding signature. The verification of the signature through a specific private key can be made only through decryption using the public key corresponding to the corresponding private key. Such an algorithm is referred to as "asymmetric key encryption algorithm", and specifically, an algorithm such as RSA or ECDSA may be used.
한편, 상술한 예시에 기재된 '디지털 지급수단'은 암호화폐(crypto currency)를 포함할 수 있다. 암호화폐는 블록체인 네트워크 내에서 분산형 시스템 방식으로 기록되는 지급수단이며, 디지털 토큰(digital token, 이하 '토큰')을 포함하는 개념의 용어로 사용되기도 하지만, 본 문서의 설명에서는 이해의 편의를 위해 '암호화폐'와 '토큰'을 아래와 같이 구분하여 사용하기로 한다. Meanwhile, the'digital payment means' described in the above example may include cryptocurrency. Cryptocurrency is a payment method that is recorded in a decentralized system within a blockchain network, and is also used as a term for a concept including a digital token (hereinafter'token'), but the description in this document provides convenience for understanding. For this purpose, it is decided to use'cryptocurrency' and'token' separately as follows.
본 문서의 설명에서 암호화폐는 하나의 블록체인 네트워크가 탄생하는 순간부터 데이터 기록 및 신뢰 유지의 보상 수단으로 사용되는 지급수단을 지칭하며, 이러한 의미로 암호화폐를 지칭하는 경우에는 네이티브 암호화폐라는 명칭으로 불리기도 한다. In the description of this document, cryptocurrency refers to a payment method used as a reward for recording data and maintaining trust from the moment a blockchain network is created, and when referring to cryptocurrency in this sense, it is called native cryptocurrency. It is also called as.
본 문서의 설명에서 토큰은 하나의 블록체인 네트워크에서 부가적으로 발생한 디지털 교환수단으로서 소정의 용도 또는 가치(ex. 원리금 수취권, 채무 증명)를 지닐 수 있다. 토큰은 블록체인 네트워크에 참여하는 노드가 자발적으로 생성할 수 있으며, 블록체인 네트워크 내에서 분산형 시스템 방식으로 토큰의 발생, 이체, 사용 정보가 기록될 수 있다. In the description of this document, tokens are digital exchange means additionally generated in one blockchain network, and can have a predetermined purpose or value (ex. principal and interest receivable, proof of debt). Tokens can be generated voluntarily by nodes participating in the blockchain network, and token generation, transfer, and usage information can be recorded in a distributed system within the blockchain network.
트랜잭션은 서버(10)가 관리하는 블록체인 계정인 OPM(Operator Master) 또는 OP(Operator) 계정에 의해 발생될 수 있다. 트랜잭션은 투자자, 차입자, 대출 정보, 투자 정보, 고유 토큰의 발행/이체에 관한 정보, 스마트 컨트랙트에 관한 정보를 포함할 수 있다. 노드는 트랜잭션의 처리 결과를 블록체인을 통해 확인할 수 있다.The transaction may be generated by an OPM (Operator Master) or OP (Operator) account, which is a block chain account managed by the
블록체인 네트워크상에서 발생되는 트랜잭션들은 상기 트랜잭션들을 생성한 주체의 블록체인 계좌의 비밀 키에 의해 암호화 서명되므로, 블록체인 네트워크상에 위변조가 불가능한 암호학적 증명 데이터로서 기록될 수 있다.Transactions occurring on the blockchain network are cryptographically signed by the secret key of the blockchain account of the subject who created the transactions, so they can be recorded as cryptographic proof data that cannot be forged or altered on the blockchain network.
트랜잭션이 발생되면, 블록체인 네트워크의 노드들은 발생한 트랜잭션의 무결성을 검증하고, 블록체인 네트워크에 구현된 합의 알고리즘에 기초해 기 생성된 블록에 이어질 새로운 블록을 생성하며, 새로이 생성된 블록은 다른 노드들에게 전파되면서 트랜잭션이 실행될 수 있다. 블록은 복수의 트랜잭션 정보를 포함할 수 있다. When a transaction occurs, the nodes of the blockchain network verify the integrity of the transaction and create a new block following the previously created block based on the consensus algorithm implemented in the blockchain network, and the newly created block is the other nodes. The transaction can be executed as it propagates to. The block may contain a plurality of transaction information.
블록에 대한 정보는 노드들이 공유하는 트랜잭션 데이터베이스에 저장될 수 있다. 트랜잭션 데이터베이스는 복수 개의 노드들이 같은 정보를 공유하는 공공 원장(public ledger)으로 이해될 수 있다. 이와 같이, 본 문서에서 블록체인 네트워크에 업로드되는 정보는 on-chain에 업로드 된다고 표현하며, 블록체인 네트워크에 기록되지 않고 서버(10)에 저장되는 정보는 off-chain에 저장된다는 통상의 용어로 기술하기로 한다. Information on blocks may be stored in a transaction database shared by nodes. The transaction database can be understood as a public ledger in which a plurality of nodes share the same information. As such, in this document, the information uploaded to the blockchain network is expressed as being uploaded on-chain, and information stored in the
블록체인 네트워크는 다양한 노드들에 의해 제공되는 다양한 스마트 컨트랙트를 배포 및 실행할 수 있다. 스마트 컨트랙트는 디지털 명령어로 기재된 규약으로서, 블록체인 네트워크에서 규약의 조건을 따르는 이벤트가 발생할 경우, 정해진 규약에 따라 특정 트랜잭션이 발생하도록 하거나 다른 스마트 컨트랙트를 실행할 수 있다. Blockchain networks can distribute and execute various smart contracts provided by various nodes. Smart contracts are protocols written in digital instructions, and when an event that follows the conditions of the protocol occurs in the blockchain network, a specific transaction can occur according to the prescribed protocol or other smart contracts can be executed.
스마트 컨트랙트는 컨트랙트 계좌(contract account)를 보유할 수 있다. 컨트랙트 계좌는 블록체인 네트워크에 포함된 노드 또는 다른 스마트 컨트랙트가 상기 스마트 컨트랙트를 동작시키기 위해 트랜잭션을 발생시키는 주소로 이해될 수 있다. 컨트랙트 계좌는 트랜잭션 메시지를 받은 경우, 내부 규약으로 정해진 디지털 명령어에 따라 다음 동작(예: 토큰 발행, 다른 스마트 컨트랙트에 담긴 정보를 비교, 특정 트랜잭션을 생성, 메시지를 읽거나 다른 계좌로 메시지 전송, 다른 스마트 컨트랙트를 생성)을 수행할 수 있다.Smart contracts can hold a contract account. The contract account can be understood as an address where a node or other smart contract included in the blockchain network generates a transaction to operate the smart contract. When a contract account receives a transaction message, the following actions (e.g., issue tokens, compare information contained in other smart contracts, create a specific transaction, read a message or send a message to another account, Smart contract creation) can be performed.
도 2는 일 실시 예에 따른 서버(10)의 구성 블록도이다. 2 is a block diagram showing the configuration of the
도 2를 참조하면, 서버(10)는 프로세서(51), 메모리(52) 및 통신 인터페이스(53)를 포함할 수 있다. Referring to FIG. 2, the
프로세서(51)는 서버(10)의 전반적인 동작을 제어할 수 있다. 프로세서(51)는 Identify & Key Services Module(80) 및 Investment Module(85)을 포함할 수 있다. 프로세서(51)는 메모리(52)에 저장된 명령어들을 실행해 Identify & Key Services Module(80) 및 Investment Module(85)을 구동시킬 수 있다. Identify & Key Services Module(80) 및 Investment Module(85)에 의해 수행되는 동작은 프로세서(51)에 의해 수행되는 동작으로 이해될 수 있다. The
도 2에서는 각 모듈의 기본적인 기능을 먼저 설명하고, 도 3 내지 도 10을 통해 프로세서가 수행하는 일련의 동작을 설명한다.In FIG. 2, basic functions of each module are first described, and a series of operations performed by the processor will be described through FIGS. 3 to 10.
Identify & Key Services Module(80)은 비밀키, 공개키, 블록체인 주소, TokenHolderKey, TokenHolderHashKey(인증 1키), TokenHolderHashKeyTxID, Exkey(인증 2키) 등의 키를 생성하고 사용자를 인증할 수 있다. 이때 인증 1키는 사용자 인증을 위해 on-chain과 off-chain 각각에 암호화되어 저장될 수 있고, 사용자가 서버에 소정의 요청을 하는 시점에 새로 인증 1키를 생성하고 기존에 on-chain과 off-chain 저장된 인증 1키와 새로 생성된 인증 1키를 비교함으로써, 요청 시점에서 사용자 정보의 위변조를 판별할 수 있다. 인증 2키는 사용자의 권리나 채무 상태를 증명하는 고유 토큰의 이체에 사용될 수 있다. 인증 1키와 인증 2키에 대한 상세한 설명은 도 3 내지 도 10에서 후술한다. Identify & Key Services Module(80)은 블록체인 네트워크(20)에 배포될 스마트 컨트랙트 관련 정보를 생성하고, 특정 규약에 따라 스마트 컨트랙트를 생성하며, 스마트 컨트랙트를 블록체인 네트워크(20)에 배포할 수 있다. 또한 Identify & Key Services Module(80)은 서버가 관리하는 블록체인 계정인 OPM 계정 및 OP 계정을 생성 및 제어할 수 있다. The Identify &
Investment Module(85)은 투자와 관련된 투자자 정보, 대출과 관련된차입자 정보 및 투자자와 차입자가 매칭되어 성사된 대출 정보를 생성할 수 있다. Investment Module(85)가 생성한 정보는 사용자의 인증에 사용될 수 있고, 인증 후 생성된 정보들이 on-chain에 기록될 수 있다. Investment Module(85)은 블록체인 네트워크(20)에 배포될 스마트 컨트랙트 관련 정보를 생성하고, 특정 규약에 따라 스마트 컨트랙트를 생성하며, 스마트 컨트랙트를 블록체인 네트워크(20)에 배포할 수 있다. The
메모리(52)는 TokenIndex DB(투자자 저장: 100, 차입자 저장: 150), TokenHolderKey DB(200), TokenHolderHashKey DB(300), 및 Exkey DB(투자자 저장: 400, 차입자 저장: 450)를 포함할 수 있고, 프로세서(51)의 동작을 수행시킬 수 있는 명령어들을 저장할 수 있다. The
TokenIndex DB(100, 150)는 투자자 및 차입자의 키들, 대출 계약 정보, 계약에 따라 생성되는 키 값들의 정보가 저장될 수 있다. TokenHolderKey DB(200)는 투자자 및 차입자의 TokenHolderKey, TokenHolderHashKey DB(300)는 투자자 및 차입자의 인증 1키, Exkey DB(400, 450)는 투자자 및 차입자의 인증 2키를 저장할 수 있다. The
통신 인터페이스(53)는 블록체인 네트워크와 통신하고, P2P 대출 시스템(1)에 포함된 구성들과 정보를 송수신 할 수 있게 한다. 이를 위해, 통신 인터페이스(53)는 무선 통신모듈 또는 유선 통신모듈을 포함할 수 있다.The
도 3은 일 실시예에 따라 투자자 관점에서 P2P 대출 서비스가 수행되는 프로세스의 개념도이다. User1은 투자자를 의미한다. 3 is a conceptual diagram of a process in which a P2P loan service is performed from an investor perspective according to an embodiment. User1 means investor.
도 3을 참조하면, 투자자의 모든 계약 거래 및 토큰을 포함한 각종 인증 키의 정보를 저장하는 투자자 전용 TokenIndex(도 3-100)에서 사용자 고유 데이터로 암호화된 TokenHolderKey를 생성하고(도 3-200), 토큰을 부여 받기 전까지의 투자자 가상계좌거래 인증용 TokeyHolderHashKey(도 3-300, 이하 인증 1키)를 받아 투자자의 투자 계약 건을 관장하는 계약 주관자 OP 계정을 생성하고 관리하는 블록체인 계정인 OPM(도 3-500), 및 특정 투자/대출 계약 건을 관장하는 OP(도 3-600)에서 투자자와 차입자에게 토큰 최종 지급전까지, 투자자의 분산 투자 계약 정보가 훼손되지 않았음을 증명하고, 투자/대출 계약이 성립된 건에 대해서만 투자자에게 고유 토큰 지급 전, 사전인증용 Exkey(도 3-400 - 이하 인증 2키)로 인증이 되면 차입자가 플랫폼에서 토큰을 받은 후에, 투자자의 특정 분산 투자 건의 대한 권리 증명용 원리금 수취권에 대한 토큰 정보 및 상환, 원리금 수취권 마켓에 대한 정보 등 투자 관리 모듈 및 스마트 컨트랙트와 통신 및 사용자 토큰 저장소용으로 사용되는 업데이트된 투자자 전용 TokenIndex(도 3-700)에 관한 것이다.Referring to FIG. 3, a TokenHolderKey encrypted with user-specific data is generated in an investor-only TokenIndex (FIG. 3-100) that stores information of various authentication keys including tokens and all contract transactions of an investor (FIG. 3-200), OPM, a blockchain account that creates and manages the contract organizer OP account that manages the investor's investment contract by receiving the TokeyHolderHashKey (Fig. 3-300, hereinafter,
도 4는 일 실시예에 따라 차입자 관점에서 P2P 서비스가 수행되는 프로세스의 개념도이다. User0은 차입자를 의미한다. 4 is a conceptual diagram of a process in which a P2P service is performed from a borrower's perspective according to an embodiment. User0 means borrower.
도 4를 참조하면, 대출이 목적인 차입자의 경우, 투자자 프로세스와는 달리 투자자의 분산 투자 계약이 진행된 후, 어떤 분산 투자 건이 다수의 투자자들로부터 투자 유치를 성공 했는지 알 수 없는 상황이 발생할 수 있으므로 (1000만원 대출 희망 중 - 투자종료시점까지 분산 투자 받은 액수가 1000만원이거나 1000만원 미만의 가격으로 투자유치 종결) 투자자 케이스와 같이 인증 1키 - 인증 2키를 진행하는 프로세스와는 다른 특징이 발생한다. 즉, 투자자 홍길동이 1000만원으로 10개의 분산투자를 진행하였을 경우, 10개중 3, 4, 7, 9번의 차입자만 투자 유치를 성공하였을 때(1000만원 대출 희망 중 여러 투자자들로부터 1000만원 모집) 투자유치를 성공한 차입자-채권에게만(도 4-650) 토큰을 발행하기 위한 OP 계정(도 4-650)에서 대출 성공한 차입자의 인증 1키(도 4-300)를 처리하는 OP(도 4-650)로부터 인증 1키를 받아, 동일 계약건에서 대출 성공한 차입자들의 인증 2키(도 4-450)를 받고 인증하여 정상적으로 대출금을 지급하고, 토큰 발행 및 저장하는 업데이트 된 차입자용 전용 토큰인덱스 파일(도 4-750)에 관한 것이다. P2P 플랫폼에서는 한정되고 제한된 자격의 참여자와 거래 플랫폼간의 합의 모델(Consensus Model)을 사용하기 위해 허가용 블록체인 네트워크를 사용할 수 있고, 이를 위한 인증 수단으로 참여자들에게 토큰을 지급하기 위한 모든 과정과 거래 상환 및 거래 일부 판매를 위해 토큰을 사용하는 방법을 이하 설명한다. Referring to Figure 4, in the case of a borrower whose purpose is to borrow, unlike the investor process, after the investor's diversified investment contract is in progress, it may be impossible to know which diversified investment has successfully attracted investment from a number of investors ( Desired for a loan of 10 million won-The amount of diversified investment received until the end of the investment is 10 million won, or the investment is terminated at a price of less than 10 million won) As in the case of an investor, the process of
도 5은 일 실시예에 따른 투자자의 인증에 사용되는 키들을 생성하는 프로세스의 흐름도이다. 5 is a flowchart of a process of generating keys used for authentication of an investor according to an embodiment.
도 5을 참조하면, User1_TokenIndex는 투자자의 주요 인증키값, 계약 정보, 계약에 따른 토큰 키 값들의 정보가 저장되는 DB이다. 도 3-100에 대응되는 단계로서 투자자는 사용자 회원 가입 후, 첫 로그인 시 [도 5-1] Indentity & Key Service Module에서 투자자의 비밀키 및 공개키를 생성하여 TokenIndex DB (keyfiles)에 저장[도 5-2]한다. 공개키로부터 블록체인 계정 주소를 생성하여 투자자 User1_TokenIndex 에 공개키를 저장하면 PublicKeyState = 1 [도 5-3]과 User1_AddressState = 1 [도 5-3]로 상태값을 업데이트하고 투자자 TokenHolderKey 키 [도 5-4]를 생성한다.Referring to FIG. 5, User1_TokenIndex is a DB in which information on key values of an investor's authentication key, contract information, and token key values according to the contract is stored. As a step corresponding to Fig. 3-100, the investor creates the investor's private key and public key in the Indentity & Key Service Module at the first login after signing up as a user member and stores it in TokenIndex DB (keyfiles) [Fig. 5-2]. When a blockchain account address is generated from the public key and the public key is stored in the investor User1_TokenIndex, the state value is updated with PublicKeyState = 1 [Fig. 5-3] and User1_AddressState = 1 [Fig. 5-3], and the investor TokenHolderKey key [Fig. 5] 4].
도 3-200에 대응되는 단계로서 TokenHolderKey 는 사용자의 고유 데이터를 사용하여 사용자 거래 인증을 위한 인증 1키 생성 요소 중 하나이며, 특정 계약건의 거래가 종료된 후에, 토큰의 기능을 위임 받아 이전거래 보기 인증용으로 사용된다. TokenHolderKey 의 생성[도 5-4]은 User1_TokenIndex 의 Payload Set(사용자 고유 데이터) 에서 추출한 사용자 아이디(UserID), Account Address, PublicKey, 가상계좌번호의 사용자 고유 데이터 세트를 갖고 와서 사용자가 첫 로그인한 시간을 [HMAC][HMAC] 비밀키로 사용하여 아래 예시와 같이 해싱 암호화(SHA256) 처리할 수 있다.As a step corresponding to Fig. 3-200, TokenHolderKey is one of the
TokenHolderKey= SHA256{SecretKey(firstLoginTimeStamp)(UserID, AccountAddress, PublicKey, VirtualBankNum)}] 로 HMAC 해싱을 처리하면 사용자의 TokenHolderKey 값은 2cb96d020dcd6e3ee35b519ff393812220710efced0ab01bebaac3d7905d5032 와 같이 생성된다. (이 값은 사용자의 암호에서 생성되는 비밀키 보다 사용자가 첫 로그인한 시간을 [HMAC][HMAC] 시크릿키를 사용하여 생성하기 때문에 더 유니크하며 예측 불가한 값이다.) TokenHolderKey이 생성되고 User1_TokenIndex에 업데이트[도 5-5] 되면 TokenHolderKey1State 의 상태값을 0에서 1로 변경 [도 5-6]하여 TokenHolderHashKey 생성 준비를 완료한다.When HMAC hashing is processed with TokenHolderKey= SHA256{SecretKey(firstLoginTimeStamp)(UserID, AccountAddress, PublicKey, VirtualBankNum)}], the user's TokenHolderKey value is created as 2cb96d020dcd6e3ee35b519ff393812220710efced0ab01bebaac3d7905d5032. (This value is more unique and unpredictable because the user's first login time is generated using the [HMAC][HMAC] secret key than the secret key generated from the user's password.) TokenHolderKey is created and User1_TokenIndex When updated [Fig. 5-5], the state value of TokenHolderKey1State is changed from 0 to 1 [Fig. 5-6] to complete the preparation for TokenHolderHashKey generation.
도 3-300에 대응되는 단계로서 TokenHolderHashKey(인증 1키)는 투자자와 차입자의 사용자 인증 및 거래 발생시 서명(SIG.)을 사용하여 거래 유효성을 확인하는데 사용될 용도로 생성한다. 즉 각 계약 별로 토큰이 발행되기 전, 투자 및 대출 계약을 진행하기 위한 인증 방법이 필요한데, 이를 위한 두 가지 방법 중 하나로 인증 1키를 사용할 수 있다. 인증 1키의 생성 [도 5-7]은 TokenHolderHashKey = Hash(UserID, TokenHolderKey, TokenHolderHashKey생성년월일시간분초) 와 같이 사용자 아이디와 [도 3,4-200] 에서 생성된 TokenHolderKey 를 사용하여 해싱 처리하여 키를 생성할 수 있다. 이때 사용될 수 있는 해싱 방법은 SHA224, SHA256, SHA384, SHA512 를 포함할 수 있다. 생성된 인증 1키는 TokenHolderHashKey 모듈의 하위에 있는 투자자용 인증 1키를 관리하는 THHK_User1H1Key()에 업데이트하고 [도 5-8], 투자자용 User1_TokenIndex 에 동시 업데이트한다. [도 5-9] User1_TokenIndex 에 인증 1키가 업데이트 되면 상태값으로 User1_H1KeyState = 1 [도 5 -10]을 모듈1으로 반환하여 Smart Contract[OPM] TokenHolderHashKeyTxID 의 생성을 시작한다. As a step corresponding to FIG. 3-300, the TokenHolderHashKey (
[도 5-11] TokenHolderHashKeyTxID 는 가상계좌거래인증, 투자 시작인증 용도로 사용된다. 인증 1키가 처음 생성된 후에, 투자자의 User1_TokenIndex 에 인증 1키가 정상적으로 업데이트 되어, User1_H1KeyState = 1 값이 확인되면[도 5-10], TokenHolderHashKeyTxID() 에서 투자자용 인증 1키의 TxID 관리 함수 THHKTxID_User1H1Key() 에 해당 인증 1키 및 관련정보를 함께 TxID(Transaction ID)로 생성하여 Input State Reference 에 보관하여[도 5-13], 추후 사용자 트랜잭션 발생시, 대조용 원본 인증 1키로 사용하며, 트랜잭션 발생 시 트랜잭션(거래)를 발생시킨 사용자의 인증 1키와 비교하여 매칭되면 블록에 기록하는 용도로 사용한다.[Fig. 5-11] TokenHolderHashKeyTxID is used for virtual account transaction authentication and investment start authentication. After the
TxID 생성을 위한 구조 및 암호화는 User1_H1KeyTxID = Keccak-256(RLP[User1_ID, H(User1_ID, TokenHolderKey1), User1_H1KeyState, nonce=1]) 와 같다.The structure and encryption for TxID generation is the same as User1_H1KeyTxID = Keccak-256(RLP[User1_ID, H(User1_ID, TokenHolderKey1), User1_H1KeyState, nonce=1]).
생성된 TxID 를 Key Value로, OPM 계정의 공개키(OPM.P)로 데이터베이스에 암호화하여 저장한다. [도 5-12]: write.User1_H1KeyDB = (TxID, 1, Enc(OPM.P{User1_ID, THHK_User1H1Key, THHK_User1H1KeyState, SigState=0, nonce=1]) 정상적으로 TxID 가 암호화되어 데이터베이스에 저장되면[도 5-12], 트랜잭션의 값들이 인증되어 블록화되기 전에 Smart Contract 에 참조할 수 있는 Input State Reference(on-chain) 에 플랫폼 OPM 계정의 비밀키(OPM.p)로 서명을 하여 on-chain의 투자자 사이드에 저장한다. [도 5-13] write.InputStateReference = Enc(OPM.p[TxID, Index])The generated TxID is used as the Key Value and the OPM account's public key (OPM.P) is encrypted and stored in the database. [Fig. 5-12]: write.User1_H1KeyDB = (TxID, 1, Enc(OPM.P(User1_ID, THHK_User1H1Key, THHK_User1H1KeyState, SigState=0, nonce=1]) When the TxID is normally encrypted and stored in the database [Fig. 5- 12], Before the transaction values are authenticated and blocked, sign the Input State Reference (on-chain) that can be referred to the Smart Contract with the secret key (OPM.p) of the platform OPM account to the investor side of the on-chain. Save [Fig. 5-13] write.InputStateReference = Enc(OPM.p[TxID, Index])
도 6는 일 실시예에 따른 투자자의 투자 선택에 따라 인증 1키를 통해 인증되는 프로세스의 흐름도이다. 6 is a flowchart of a process of being authenticated through an
도 6를 참조하면, 투자자의 인증 1키를 투자자의 비밀키로 서명하여 거래 제출하고, 회원 가입 시점에 생성되어 on-chain 에 저장된 인증 1키(TokenHolderHashKey TXID 에 보관된) 인증 1키와 비교하여 동일한 키로 매칭되면, THHK_User1H1KeyState = 1, SigState = 1 (투자자 전자 서명된 상태)를 리턴하여, 정상적인 인증 1키의 상태를 보존하여 추후 투자자와 차입자의 계약 정보를 암호화 시, 인증 1키를 같이 저장하여 계약 정보의 인증 및 무결성을 체크하는데 사용할 수 있다. 6, the investor's
도 6의 구체적 프로세스는 다음과 같다. The specific process of FIG. 6 is as follows.
1. 투자자가 플랫폼에서 사용자 별로 제공하는 가상계좌에 예치금을 입금 후, 투자금 1000만원으로 분산투자를 위한 채권들을 화면에서 n개를 선택하고 '투자하기 버튼'을 클릭하면 투자 실행을 확인하는 대화창에서 '투자를 실행하시겠습니까?' 에 사용자 로그인 암호를 입력하면 투자가 실행된다. 1.After the investor deposits the deposit into the virtual account provided by the platform for each user, select n bonds for diversification investment with an investment of 10 million won on the screen and click the'Invest button' in the dialog window to confirm the investment execution. 'Would you like to make an investment?' Enter the user login password in and the investment is executed.
2. 사용자 인증과 각종 인증키 및 암호화를 담당하는 사용자키 (Identity & Key Services) 모듈에서 사용자의 암호를 입력받아 keyfiles 에 암호화되어 저장된 투자자의 비밀키(투p)를 추출한다. 2. The user's password is inputted from the user authentication, various authentication keys, and encryption (Identity & Key Services) module, and the investor's secret key (two p) is encrypted and stored in keyfiles.
3. 투자 인증용 인증 1키를 생성 및 투자자의 비밀키로 서명하여 (InvestStart_User1H1Key = Enc(투p(User1_H1Key)) 키를 생성한다.3. Generate the
4. 투자 및 대출 관리를 담당하는 투자 관리 모듈(Investment Module) 로 투자자의 인증 1키(InvestStart_User1H1Key)와 투자 및 대출 관리 모듈(Investment Module) 에 있는 투자자 아이디로 투자한 1번 과정에서 입력 받은 투자 정보들(투자금, 선택한 분산투자 정보, 투자금 및 채권들)이 담긴 인스턴스 ContractInfoSetInstance()에 담긴 정보를, 투자 계약 정보들[ContractNum(), SubContractNum(), SelectedBondName()] 로 가져온다.4. Investment information entered in
5. InvestStart_User1H1KeyMethod(): 투자 계약 정보의 인증 수단을 위해 사용자 인증 1키를 ContractNum(SubContractNum())에 배치한다.5. InvestStart_User1H1KeyMethod(): The
6. 투자자의 인증 1키가 투자 관리 InvestStart_User1H1Key 키가 투자 관리 모듈에 업데이트 되면, 해당 계약 건이 시작되었음을 기록하는 상태값으로 InvestState = 0 에서 InvestState = 1 로 변경하여 투자가 시작되었음을 시스템에 업데이트 한다.6. When the investor's
7. 상기 [4,5,6] 과정을 전체 투자 정보에 업데이트 한다.7. Update the above [4,5,6] process to all investment information.
8. InvestState = 1 로 업데이트 되어, 투자가 시작되면 [도 5-13] write.InputStateReference = Enc(OPM.p[TxID, 1]) 로 저장한 인증 1키의 TxID 를 OPM(Operator Master) 계정의 공개키(OPM.P)로 서명을 받아서 복호화(Decrypt) 하여 Dec(OPM.P[TxID,Index]) 8. When InvestState = 1 is updated and investment is started, the TxID of the
9. 상기 [8] 과정에서 구한 TxID(Transaction ID) 의 인덱스 1값의 TxiD 를 구한다.9. Calculate the TxiD of the
10. 상기 [8] 과정에서 구한 TxID 를 사용자키 (Identity & Key Services) 모듈로 보낸다. 10. Send the TxID obtained in the step [8] to the User Key (Identity & Key Services) module.
11. 상기 [9] 과정에서 받은 TxID 를 쿼리(query)하여 데이터베이스에서 TxID 를 키로 해당하는 DB를 찾아, 해당 TxID 와 함께 보관된 암호화된 사용자 아이디와, 사용자 인증 1키 원본을 복호화한다. Dec(OPM.p(TxIDvalue)), TxIdvalue=(User1_ID, THHK_User1H1Key, THHK_User1H1KeyState, SigState, nonce=1)11. Query the TxID received in step [9], find the DB corresponding to the TxID as a key in the database, and decrypt the encrypted user ID stored with the TxID and the
12. 상기 [10] 과정의 복호화 작업이 끝나면 투자 모듈에 보관중인 투자자가 투자 시 제출한 투자용 인증 1키 InvestStart_User1H1Key()를 OPM 계정으로 요청한다. 12. After the decryption work in the above [10] process is completed, the investor who is stored in the investment module requests the
13. 플랫폼 마스터 계정인 OPM으로 투자 관리 모듈에서 InvestStart_User1H1Key() 에 있는 투자자의 비밀키로 서명을, 투자자의 공개키로 인증 1키를 복호화하여 사용자키 모듈로 리턴한다. 이때 서명을 정상적으로 받았으므로 서명 상태값을 SigState = 1 로 업데이트 한다.13. Decrypt the signature with the investor's private key in InvestStart_User1H1Key() in the investment management module with the platform master account OPM, and decrypt the
14. 상기 [10] 과정에서 획득한 투자자의 인증 1키(THHK_User1H1Key), 즉 회원가입 시 바로 생성하여 on-chain에 보관한 투자자의 인증 1키와 투자거래가 일어난 시점에 제출된 인증 1키[도 6-12]가 동일한 사용자 아이디인지 확인 후에 두 개의 키가 매칭되는지 확인하여 사용자인증 및 해킹 여부를 판별 할 수 있다.14. Investor's 1 key (THHK_User1H1Key) acquired in the above [10] process, that is, 1 key of investor's authentication that was created immediately upon membership registration and stored on-chain and 1 key of authentication submitted at the time of investment transaction [Fig. After confirming that 6-12] is the same user ID, user authentication and hacking can be determined by checking whether the two keys match.
15. 상기 [10] 과정에서 획득한 User1_H1Key0와 상기 [12] 과정에서 획득한 User1_H1Key1 이 매칭이 되면 앞으로 OPM[도 3-500, 도 4-550], OP[도 3-600] 에서 사용하게 될 입증된 인증 1키의 값을 리턴한다. return User1_ID, User1_H1Key0, THHK_User1H1KeyState = 1, SigState = 115. If User1_H1Key0 obtained in [10] and User1_H1Key1 obtained in [12] match, it will be used in OPM [Fig. 3-500, Fig. 4-550], and OP [Fig. 3-600]. Returns the value of the authenticated
16. 상기 [14] 과정에서 리턴된 값들(User1_ID, User1_H1Key0, THHK_User1H1KeyState = 1, SigState = 1)을 TokenHolderHashKey 모듈로 전송한다.16. The values returned in step [14] (User1_ID, User1_H1Key0, THHK_User1H1KeyState = 1, SigState = 1) are transmitted to the TokenHolderHashKey module.
17. TokenHolderHashKey 모듈의 투자자 인증 1키 관리 메서드 ValiTHHK_User1H1Key() 에 업데이트 한다.17.
도 7는 일 실시예에 따라 차입자 대출 요청을 투자자가 선택하여 매칭되기까지 인증 1키를 통해 인증되는 프로세스의 흐름도이다. 7 is a flowchart of a process in which a borrower loan request is authenticated through an
도 7를 참조하면, OP(650)에서 차입자의 인증 1키(300)가 확보되어야 차입자에게 {인증 2키(450) 인증 -> 차입자 신청 대출금 지급 -> 토큰 지급의 순서}로 진행 될 수 있는데, 단일 계약에서 지정된 시간 안에, 투자자의 채권에 대한 '분산투자 n 개중 n 개 전부 투자 성공 = 희망 대출금 신청금액 달성'이 될 수도 있고, 안 될 수도 있다. 투자자 인증 1키 프로세스처럼 투자자의 분산투자에 선택된 모든 차입자에게 인증 1키를 발행하고 인증을 받아도, 대출 실패가 발생되는 채권에 해당되는, 해당 채권의 인증 1키를 파기해야 하는 프로세스와 사용할 일이 없는 차입자의 인증 1키를 생성하는 프로세스 낭비가 발생한다. 따라서 투자자의 분산투자 활동에서 대출금 모집에 실패한 케이스 채권명에 해당하는 인증 1키는, 처음부터 발급하지 않는다. 즉 투자자A의 10개의 분산투자 채권 중, 다른 투자자들로부터 플랫폼이 지정한 투자기간(ex: 2주) 에 희망 대출금 1000만원을 분산투자 받은 대출 성공 채권(ex:BondName #23994)들이 6개가 있다고 가정하면, 해당 6개의 채권의 차입자의 인증 1키들만, 정상적인 인증 작업과 서명작업 상태를 거쳐, 다음 프로세스를 진행할 수 있도록 차입자의 인증 1키를 정상적으로 TokenHolderHashKey(300)에 업데이트하는 방법 및 프로세스이다. 이 방법은 정해진 시간 안에 예측 불가능한 각종 거래 결과물에 식별 인증키를 부여하는 프로세스로 응용할 수 있다.Referring to FIG. 7, the borrower's
도 7의 구체적 프로세스는 다음과 같다.The specific process of FIG. 7 is as follows.
1. 차입자의 인증 1키가 첫 생성되어 (150)번에 업데이트 되었을 때의 상태값(User0_H1KeyState = 1)이다. 차입자의 인증 1키 생성 및 저장 프로세스는 투자자 프로세스와 같이 (도 5: 1~10) 동일하여 중복되는 설명은 생략한다.1. This is the state value (User0_H1KeyState = 1) when the borrower's
2. 차입자의 인증 1키를 생성 즉시, on-Chain에 보관하기 위하여 TxID(Transaction ID) 를 생성(TxID 생성을 위한 구조 및 암호화는 User0_H1KeyTxID = Keccak-256(RLP[User0_ID, H(User0_ID, TokenHolderKey0), User0_H1KeyState, nonce=1]) )하고 (생성방법은 [도 3-300] 의 설명과 동일)2. As soon as the borrower's
3. 생성된 TxID 를 Key Value로, 플랫폼 오퍼레이터 마스터(OPM) 계정의 공개키(OPM.P)로 데이터베이스에 암호화 하여 저장한다.: write.User0_H1KeyDB = (TxID, 1, Enc(OPM.P{User0_ID, THHK_User0H1Key, THHK_User0H1KeyState, SigState=0, nonce=1])3. Encrypt the generated TxID as the Key Value and the public key (OPM.P) of the platform operator master (OPM) account in the database and store: write.User0_H1KeyDB = (TxID, 1, Enc(OPM.P{User0_ID) , THHK_User0H1Key, THHK_User0H1KeyState, SigState=0, nonce=1])
4. 정상적으로 TxID 가 암호화되어 데이터베이스에 저장되면[도5-1-3], 트랜잭션의 값들이 인증되어 블록화 되기 전에 Smart Contract 에 참조할 수 있는 Input State Reference 에 플랫폼 오퍼레이터 마스터(OPM) 계정의 비밀키로 서명하여 차입자 사이드에 저장한다. write.InputStateReference = Enc(OPM.p[TxID, Index])4. If the TxID is normally encrypted and stored in the database [Fig. 5-1-3], before the transaction values are authenticated and blocked, enter the input state reference that can be referred to the Smart Contract as the secret key of the platform operator master (OPM) account. Sign and store on the borrower's side. write.InputStateReference = Enc(OPM.p[TxID, Index])
5. 4번 프로세스를 저장한다.5. Save
6. 1번에서 인증 1키의 첫 생성 상태값(State)으로 로그인한 차입자 아이디의 인증 1키의 상태값으로 User0_H1KeyState = 1 이 되면, 차입자의 대출신청을 투자자의 투자 리스트 페이지에 표시 될 수 있도록 ValidateLendApply() 를 실행 및 처리한다. 차입자 최초 회원 가입 -> 대출 신청 페이지 -> 대출 신청서 제출 후에 플랫폼 운영자로부터 대출 심사 승인을 받으면 Lender_Approve = 0 에서 1로 상태값을 변경한다. 차입 자의 대출 신청 심사 등록(Lender_Approve = 1 )이 되었고, 차입자. 인증 1키가 생성(User0_H1KeyState = 1) 되었다면 차입자에게 알림(이메일, App Push)을 주어 투자 유치 가능 상태를 알려주고,6. When User0_H1KeyState = 1 as the state value of the
7. 차입자 로그인 후에 '나의 대출 신청 페이지'에서 대출 리스트 페이지에서 '등록버튼'을 클릭하여 대출 신청 심사 등록(Lender_Approve = 1 )을 받은 대출 등록을 원할 때, 차입자가 대출등록 확인을 위하여 차입자의 로그인 시 사용한 암호를 다시 입력한다,7. After logging in to the borrower, click the'Registration button' on the loan list page on the'My Loan Application Page', and when the borrower wants to register the loan that received the loan application review registration (Lender_Approve = 1), the borrower logs in to confirm the loan registration. Re-enter the password you used at the time,
8. 입력한 차입자의 암호를 서버의 사용자키 (Identity & Key Services) 모듈로 보안 전송하여, 사용자의 암호를 입력받아 keyfiles 에 암호화되어 저장된 차입자의 비밀키를 추출한다. 8. Securely transmits the entered borrower's password to the server's User Key (Identity & Key Services) module, receives the user's password, and extracts the borrower's secret key encrypted and stored in keyfiles.
9. 대출 등록 인증용 차입자의 인증 1키를 재생성(투자자의 투자 시점 새로운 인증 1키 재생성 과정과 동일) 및 차입자의 비밀키(차.p)로 서명한다. (InvestStart_User1H1Key = Enc(차p(User0_H1Key)) 9. Regenerate the borrower's
10. 9번에서 생성된 차입자 서명의 인증 1키(InvestStart_User0H1Key)와 차입자의 나의 대출 신청 페이지에 있는 대출 신청 정보 - myBondInstance(), 즉 대출신청 정보(대출 사용자 정보, 희망 대출금, 기존대출현황, 신용등급 등)을 포함하여 투자 및 대출 관리를 담당하는 투자 관리 모듈(Investment Module) 로 전송한다.10. The borrower's
11. 10번에서 전송값을 투자 관리 모듈(Investment Module)에서 받으면, 해당 차입자의 아이디로 이전 대출 신청 여부를 체크하고, 진행중인 대출 신청이 없다면 makeNewBondNum() 를 실행하여 사용된 적이 없는 신규 채권명(New BondName)을 발행(Ex: new bondName(#334959))을 발행하여, 차입자의 서명된 인증 1키와 함께 투자자의 투자 리스트 페이지에 표시될 수 있도록 displayNewBondList() 에 업데이트 한다.11. When the transfer value is received from the Investment Module in
12. 차입자의 채권명(BondName), 대출 성공 상태(BondRight = 0), 희망 대출금(bondAmount = 1000만원), 차입자 서명된 인증키(InvestStart_User0H1Key)를 투자자의 투자하기 페이지에 표시되는 채권 리스트에, 채권별 코드로 업데이트한다.12. Enter the borrower's bond name (BondName), loan success status (BondRight = 0), desired loan amount (bondAmount = 10 million won), and the borrower's signed authentication key (InvestStart_User0H1Key) in the bond list displayed on the investor's investing page. Update with star code.
13. 투자자의 투자하기 페이지에 표시되는 채권 리스트에서 분산투자 개수, 예를 들어 10개의 채권을 선택한 후에 투자를 실행하시겠습니까? 에서 투자를 실행. (도 6-1)의 설명과 대응.13. Would you like to make an investment after selecting the number of diversified investments, eg 10 bonds, from the bond list displayed on the investor's Make Invest page? Investments in the market. Description and correspondence of (Fig. 6-1).
14. (도 6-2)의 설명과 대응.14. Description and correspondence of (Fig. 6-2).
15. (도 6-3)의 설명과 대응.15. Description and correspondence of (Fig. 6-3).
16. (도 6-4)의 설명과 대응.16. Description and correspondence of (Fig. 6-4).
17. (도 6-7)의 설명과 대응.17. Description and correspondence of (Fig. 6-7).
18. (도 6-16) 에서 인증(THHK_User1H1KeyState = 1)되고 서명 확인된(SigState = 1) 투자자의 인증 1키가 TokenHolderHashKey(300)에 업데이트 되면 해당 인증 1키를 OPM(500)에서 인증 1키를 담당하는 OPM_TokenHolderHashKey1(Index, User1_ID, OPM_User1H1Key, OPM_User1H1State) 에서 받고, 투자자의 인증 OPM_User1H1State = 1 로 업데이트 되면, OP(600) 에서 투자자의 인증 1키를 담당하는 OP_TokenHolderHashKey1(Index, User1_ID, OP_User1H1Key, OP_User1H1KeyState) 에서 해당 투 자가의 인증 1키를 OPM_User1H1Key = OP_User1H1Key 로 업데이트하고 상태값을 OP_User1H1KeyState = 1로 업데이트하여, On-Chain에서 참여자의 투자 및 대출을 관장하는 OP 에서 해당 계약 건을 정상적으로 업데이트하여 해당 계약정보를 블록화 시킬 수 있는 상태가 시작된다.18.(FIG. 6-16) authenticated (THHK_User1H1KeyState = 1) and signed (SigState = 1) If the investor's
19. 투자자의 투자 계약건으로 OP(600)에서 해당 투자 계약건(ContractNum())으로 투자가 시작(InvestState=1) 되었고 (도 6-6), 아직 투자 종료가 발생되지 않은 상태(OP_InvestDueTimeState=0)에서, 투자자의 이전 계약건으로 분산 투자한 10건 중 n 건의 채권이 희망 대출금 모집이 완료된 상태 발생(bondRight=1) 된 채권만 필터링하여 분류한다.19. As an investor's investment contract, the investment started (InvestState=1) from the OP (600) to the corresponding investment contract (ContractNum()) (Fig. 6-6), and the investment has not yet been terminated (OP_InvestDueTimeState=0), Among the 10 diversified investments as an investor's previous contract, n bonds are classified by filtering only those bonds that have occurred in the state that the desired loan has been recruited (bondRight=1).
20. 19 번의 희망 대출금 모집이 완료(bondRight=1) 된 상태인 채권명(bondName)과 이에 연결된 차입자 아이디(User0_ID) 그리고 이 아이디 차입자가 대출 등록 시 사용한 서명된 차입자의 인증 1키 (InvestStart_User0H1Key)를 사용자키 모듈의 BondRight1User0_ValiH1KeyMethod( )로 보내어 bondRight=1인 차입자의 검증된 인증 1키와 서명 상태값을 구한다.20. The bond name (bondName) that has been recruited for 19 times (bondRight=1), the borrower ID connected to it (User0_ID), and the signed borrower's
21. BondRight1User0_ValiH1KeyMethod( ) : 차입자 인증 1키의 위변조를 검증하고, 20번에서 받은 차입자의 InvestStart_User0H1Key 키를 받아서 Dec(차P(User0_H1Key)) 로 서명을 받아(SigState=1) 확보한 User0_H1Key 를 임시 변수 k1 에 보관한다. 21. BondRight1User0_ValiH1KeyMethod( ): Verify forgery of the borrower's
22. 5-1의 2번에서 생성한 TokenHolderHashKeyTxID 를 획득한다.22. Obtain the TokenHolderHashKeyTxID created in
23. On-chain 에 있는 (TxID, Index) 를 획득한다. 23. Acquire (TxID, Index) in the on-chain.
24. TxID 를 사용자키 모듈로 보낸다. 24. Send TxID to user key module.
25. 암호화된 데이터베이스에서 24번에서 받은 TxiD 를 query 하여 차입자가 회원 가입 시 생성된 300번 TokenHolderHashKey에 보관했던 차입자용 인증 1키를 암호화된 데이터베이스에서 복호화하여, Dec(OPM.p(TxiDvalue))하여 (THHK_User0H1Key) 를 구하고, 임시변수 k0 에 보관한다.25. Query the TxiD received from No. 24 in the encrypted database, and decrypt the borrower's
26. validateUserH1Key() 에서 임시 변수 k1 과 k0 에 보관중인 두 개의 키가 매칭되는지 검증한다. 두 키가 매칭이 되면 해당 키의 차입자 아이디와 300 번에 저장되는 차입자의 인증 1키(THHK_User0H1Key) 를 저장하고, 매칭 상태값으로 THHK_User0H1KeyState = 1 로 기록하고 서명 상태 (SigState = 1) 값들을 26. In validateUserH1Key(), verify that the two keys stored in temporary variables k1 and k0 match. If the two keys match, the borrower ID of the key and the borrower's
27. 300번, TokenHolderHashKey으로 보낸다.27. Send to 300, TokenHolderHashKey.
28. TokenHolderHashKey 에서 위에서 받은 값들을 업데이트 한다.28. Update the values received above in TokenHolderHashKey.
29. 차입자의 인증 1키를 TokenHolderHashKey(321) 에서 각 계약을 담당하는 계정 OP(600) 계정을 생성할 수 있는 OPM(551) 으로 전송한다. (도6 참고) OPM_TokenHolderHashKey0(Index, User0_ID, OPM_User0H1Key, OPM_User0H1State) 으로 전송한다. TokenHolderHashKey DB에 포함된 차입자 인증 1키가 업데이트되어 THHK_User0H1KeyState = 1 이면, 차입자의 인증 1키를 담당하는 OPM의 OPM_User0H1Key의 값을 TokenHolderHashKey DB의 차입자의 인증 1키 THHK_User0H1Key 값으로 업데이트 하고, OPM_User0H1Key 값이 업데이트(OPM_User0H1State=1) 되면 블록체인 계정인 신규 OP 계정(600)을 생성시키고, 신규계약 번호를 생성하여 New ContractNum(), 생성된 신규 OP 계정에 할당한다. 신규 OP 계정이 생성되면, 차입자 ID를 키 값으로 OP 모듈에서 차입자 인증 1키를 관리하는 OP_TokenHolderHashKey0() 에서 OPM_TokenHolderHashKey0 에 있는 차입자의 인증 1키 값을 OPM_User0H1State=1 상태값을 체크하여 OP_TokenHolderHashKey0(Index, User0_ID, OP_User0H1Key, OP_User0H1KeyState) 획득하여 업데이트 되면 OP_User0H1KeyState = 1 를 반환한다. (도 8-550 참고)29. The borrower's
30.
투자자, 차입자의 OP. 인증 1키가 업데이트 되면, 투자 유치 성공한 (bondRight =1) 채권들의 정보와 이에 투자한 투자자들의 정보들을 블록에 기록하는 작업을 ContractUpdateValidator() 에서 진행한다. 30.
OP of investors and borrowers. When the
도 8은 일 실시예에 따라 투자자의 투자 정보 및 차입자의 대출 정보를 생성하고 스마트 컨트랙트에 업로드하는 프로세스의 흐름도이다.8 is a flowchart of a process of generating investment information of an investor and loan information of a borrower and uploading it to a smart contract according to an embodiment.
도 8의 구체적 프로세스는 다음과 같다.The specific process of FIG. 8 is as follows.
1. (300)번 모듈에서 투자자의 TokenHolderHashKey 와 상태값을 저장하는 (311 - 도 6-16 참고), OPM은 플랫폼 마스터 역할로서 신규 투자 계약 발생시, 해당 계약을 주관하는 신규 OP (600) 계정을 생성하기 위 해, 검증된 투자자의 인증 1키를 필요로 한다. OPM 에서 투자자의 인증 1키를 관리 함수 OPM_TokenHolderHashKey1() 에서 체크하여 (311번) 에서 투자자의 인증 1키가 정상적으로 검증되어 업데이트 되었는 지와(THHK_User1H1KeyState = 1), 서명(SIgState = 1)되었는 지를 확인한다. 1.In module (300), the investor's TokenHolderHashKey and status value are stored (311-see Fig. 6-16), and OPM is the platform master role, and when a new investment contract occurs, a new OP (600) account that manages the contract is opened. In order to create it, it requires 1 key of verification from a verified investor. OPM checks the investor's
2. 투자자의 인증 1키를 관리 함수 OPM_TokenHolderHashKey1() 에 투자자의 인증 1키(OPM_User1H1Key)와 검증되고 서명된 투자자의 인증 1키가 업데이트된 상태값(OPM_User1H1State = 1)을 저장한다. OPM_User1H1State = 1 이 되면 OPM 이 (600)번의 OP 용 계정을 생성(OPM_newOPaccountState = 1) 하고, 투자 시작 시 시스템에서 배당 받은 계약 번호를 OP가 받을 수 있도록 OPM 이 투자관리모듈(Investment Module)에서 사용되지 않은 계약번호를 가져와서 신규 생성된 OP 계정에 계약번호를 할당한다.2. The investor's
3. OP(600) 계정이 생성되면, 투자자 인증 1키를 담당하는 OP_TokenHolderHashKey1() 이 정상적으로 업데이트 되었는지 확인(OP_User1H1KeyState = 1) 후에 해당 투자자의 투자 계약 번호의 계약이 정상적으로 시작되어 종료되지 않은 상태임을 확인한다. 3. When the OP(600) account is created, confirm that the OP_TokenHolderHashKey1() in charge of
4. 501번에서 투자자 인증 1키에 해당하는 정보 값들 OPM_TokenHolderHashKey1(Index, User1_ID, OPM_User1H1Key, OPM_User1H1State) 에서 OPM에서 투자자 인증 1키가 정상적으로 업데이트 되었을 때 상태값인 OPM_User1H1State = 1 이라면 OP_TokenHolderHashKey1() 로 투자자 인증 1키 값을 501 번에서 OPM_TokenHolderHashKey1() -> 600번 OP_TokenHolderHashKey1() 로 가져온다.4. In 501, the information values corresponding to the
5. 4번에서 가지고 온 투자자 인증 1키 값을 601번에 업데이트 한다. OP_TokenHolderHashKey1(Index, User1_ID, OP_User1H1Key, OP_User1H1KeyState) 에 업데이트 되면, OP 용 투자자1키의 업데이트 상태 값으로 OP_User1H1KeyState = 1로 업데이트 한다.5. Update the value of the
6. 601번에서 OP_User1H1KeyState = 1 이면 투자자 인증 1키 (OP_User1H1Key)를 650번 투자 계약정보에 업데이트 하고, 투자자의 투자 시작의 트랜잭션 발생에 따른 투자 계약 정보를 블록에 기록하기 위해서, 회원 가 입시 TxID 에 저장한 투자자의 인증 1키(Cold Version)의 호출 목적으로OP_User1H1KeyState = 1 상태가 되면, 전체투자계약번호 Contract 2342와 투자자의 인증 1키를 계약정보 업데이트 관리함수인 670번 ContractUpdateValidator()로 전송한다. (650번에서 전체투자계약번호는 2342 이고, 분산투자를 10회 하였다면, 하위분산투자 계약번호는 2342-1~10로 리스트가 생성됨. 이때 하위분산투자에 대응되는 채권에 서(680) 희망투자금액이 모집 완료되면 상태값으로 BondRight = 1 로 업데이트되고, (650) 특정 하위분산투자 계약 2342-2 에 원리금 수취권이 형성되어 InvestSubRight = 1 로 상태값이 변경됨)6. If OP_User1H1KeyState = 1 in 601, the
7. 1001번에 보관중인 투자자 회원 가입 시 저장한 인증1의 콜드버전(도3-13에서 블록으로 기록된) 인증 1키 값을 구하기 위해 OP 계정 서명으로, 사용자아이디, 전체계약넘버를 포함하여 스마트 컨트랙트로 사용자아이디 에 해당하는 인증 1키 값을 요청한다.7. In order to obtain the cold version of the authentication 1 (recorded as a block in Fig. 3-13), the
8. (1001) 에 기록된 TxID 값을 구하기 위해 7번에서 받은 OP 서명을 OPM 이 받아서, 정상적으로 발급된 OP 계정인지, 해당 OP 계정에 할당된 계약이 정상적으로 시작되었고, 아직 청산되지 않은 지의 상태값을 확인하여 아 직 진행중인 상태가 확인되면 TxID 를 블록에서 읽어서 (682)으로 넘기고 다시 670번으로 보낸다.8. In order to obtain the TxID value recorded in (1001), the OPM received the OP signature received in
9. 8번 프로세스에서 확보한 TxID 에 해당하는 암호화된 데이터를 복호화하여 off-chain에 저장된 투자자의 인증 1키 버전을 확보한다. 9. The encrypted data corresponding to the TxID secured in
10. u1_0.key 에 임시 저장하고 상태값을 u1_0keyState = 1 로 업데이트 되면 11번을 실행한다.10. Temporarily store in u1_0.key and execute 11 when the state value is updated to u1_0keyState = 1.
11. 투자자가 로그인하여 실제적으로 접속하게 되는 거래활동 및 계약 정보 보관소인 100번 모듈에 포함된 투자자 인증 1키를 관리하는 User_TokenHolderHashKey1() 를 OP 권한으로 엑세스하여 투자자 인증 1키를 구한다. (off-chain 영역에 있으므로 블록체인에서는 전체 로직상 인증 1키의 위변조가 있다고 처음부터 가정하기 때문에 키 값의 매칭 확인을 해야 한다. 잘못된 정보를 블록체인에 보관하게 되면 가짜가 진실이 되어 버림을 방지하는 것이 목적이다)11. Access User_TokenHolderHashKey1(), which manages the
12. 11번에서 확보한 투자자 인증 1키를 u1_1.key 에 임시 보관하고 상태값을 u1_1keyState = 1 로 업데이트 되 면, (670) 에서 u1_0keyState = 1 과 u1_1keyState = 1 값을 확인 후에 (671) 값과 (672) 값이 매칭이 되는지 확인한다. 12. If the
13. 675 상태값(ContractVali_H1Key1 = 1 )을 기록하여 650 의 계약 정보에 업데이트하고, 651번에 OP.PublickKey(650 Data)로 암호화하여 저장한다.13. Record the 675 status value (ContractVali_H1Key1 = 1), update the contract information of 650, and store it encrypted with OP.PublickKey (650 Data) at 651.
14. 단일 채권명(#244553)에 다수의 분산투자를 한 투자자들이 존재하게 되는데, 투자자1의 인증 1키 검증 상태값, ContractVali_H1Key1 = 1 (675) 이 발생하면, 이 채권(#244553)에 투자한 다수의 투자자들의 인증 1키 검증 상태값을 따로 관리하는 OP.rePayBook.bondName(677) 모듈로, 투자자가 분산투자한 채권의 대출금이 모집 되어(bondRight=1) 투자자의 분산투자(2342-2)건이 예비 원리금수취건 확보 상태(InvestSubRight=1)인 경우에만 (677)로 전송하여 채권에 투자한 투자자들의 인증 1키 검증값을 모두 저장하고, OP.rePayBook.bondName(Index,contractNum, contractVali_H1Key1=1) 에서 이 채권에 투자한 모든 투자자들의 인증 1키 검증값이 모두 1이면(contractVali_H1Key1=1), 채권명(bondName)과 함께 상태값 (allContractVCali_H1key=1)을 리턴하여 추후 토큰 지급 및 상환 시에 사용한다. 14. Investors who have made a number of diversified investments in a single bond name (#244553) exist. If
A. (650) 에 하위투자계약번호에 대응되는 채권에서 대출투자유치 성공이 일어난 채권 SelectedBondName(bondName, bondright=1)을 알아보는 함수에서 해당 채권명이 목표투자유치금액을 달성 (bondright=1)했는지 체크하여 투자 유치 성공한 채권의 차입자의 인증 1키를 구한다.A. In the function that finds the bond SelectedBondName (bondName, bondright=1) that has succeeded in attracting loan investment from the bond corresponding to the sub-investment contract number in (650), whether the bond name has achieved the target investment attraction amount (bondright=1) Check and obtain 1 key of authentication of the borrower of the bond that successfully attracted investment.
B. bondright=1 이 된 채권의 소유자 인증 1키를 요청한다.
C, D 해당 차입자의 인증 1키(321)를 551번으로 업데이트 한다. (투자자와 동일)C, D The borrower's
E. (도 8-3)의 설명과 대응. E. Description and correspondence of (Fig. 8-3).
F. (도 8-4)의 설명과 대응.F. Description and correspondence of (Fig. 8-4).
G. (550) OP_TokenHolderHashKey0() 에서 업데이트된 정보를 (602) 에 차입자 인증 1키를 업데이트하고, 업데이트 상태값으로 OP_User0H1KeyState =1 로 업데이트 한다.G. (550) The information updated in OP_TokenHolderHashKey0() is updated with the
H. (602) 에서 차입자의 인증 1키 상태값이 OP_User0H1KeyState =1 이면 OP가 관리하는 대출투자유치성공 (bondRight=1) 만 필터링 한 (680) OP.SelectedBondName()에 차입자의 인증 1키(OP_User0H1Key)를 해당 차입 자의 채권명에 해당하는 인덱스에 업데이트 OP.SelectedBondName(Index, OP_bondName, User0_ID, OP_bondRight=1, OP_User0H1Key) 한다. 차입자의 인증 1키가 602번과 같이 정상적으로 OPM에서 업데이트 (OP_User0H1KeyState =1) 되었으면 차입자 아이디(User0_ID)와 채권명(OP_bondName), 차입자 인증 1키 (OP_User0H1Key)를 670번 ContractUpdateValidator()으로 전송한다.H. In (602), if the status value of the borrower's
I. off-chain에 저장된 차입자의 인증 1키 버전을 확보한다. (FYI: 해당 TxID는 7,8번에서 확보한 TxID로 통합 사용함)I. Secure the borrower's authentication 1-key version stored in the off-chain. (FYI: The TxID is integrated with the TxID obtained in #7 and 8)
J. 차입자의 인증 1키 콜드버전 확보하여 673번 u0_0.key 에 임시 저장하고, 상태값을 u0_0keyState=1 로 업데이트 되 면 K 프로세스 실행한다.J. Obtain a cold version of the borrower's
K. (752) User_TokenHolderHashKey0() 를 OP 권한으로 엑세스하여 차입자의 인증 1키 구한다. (11번 프로세스 참고)K. (752) Access User_TokenHolderHashKey0() with OP authority to obtain the borrower's
L. (752) 에서 확보한 키를 u0_1.key 에 임시보관하고 상태값을 u0_1keyState = 1 로 업데이트 되면, (670) 에서 각각 의 u0_1.key 과 u0_0.key dml 의 상태값 1이 확인 후에 (674) 값과 (673) 값이 매칭이 되는지 확인한다. L. If the key obtained from (752) is temporarily stored in u0_1.key and the state value is updated to u0_1keyState = 1, the
M. (676) 분산투자된 차입자의 채권 업데이트 가능 상태값 (ContractVali_H1Key0 = 1 )을 기록하여 680 계약 정보에 업데이트 한다. M. (676) Record the value of the receivable updateable status of the diversified borrower (ContractVali_H1Key0 = 1) and update the 680 contract information.
H 프로세스에서 680에 전송된 차입자의 인증 1키와 673의 키가 매칭이 되면 최종적으로 채권(680)의 정보를 ContractUpdateValidator()(670)으로 전송한다. 이때 670 에서는 마찬가 지로 6번 프로세스에서 전송된 투자자. 인증 1키와 671 에서 저장한 키의 값이 매칭되면 670으로 전송하여 전체 계약 정 보를 블록에 기록하는 프로세스 O, P, Q 를 실행한다. ContractVali_H1Key1 = 1 상태에서 6번 프로세스에서 배치된 인증 1키와 다시 비교하는 목적은 off-chain에 저장된 버전의 인증 1키와 투자 시점에서 배치된 인증 1키를 다시 의심해서 비교하는 과정이고, 차입자의 관점에서도 동일한 이유이다.In the H process, when the
N. 이전 계약 정보를 읽거나 쓰기 위한 과정으로, OPM 계정에서 OP 계정으로 토큰이 전달되었을 때 또는 블록에 정보 기록 시에 사용될 수 있다. 두번째 업데이트 시 이전 거래 기록이 있을 경우 조회하여 인덱스 번호 비교 후 업데이트 진행 여부 결정할 수 있다. (도 8-13 프로세스 참조)N. This is a process for reading or writing previous contract information, and can be used when tokens are transferred from OPM account to OP account or when information is written to a block. During the second update, if there is a previous transaction record, it can be viewed and compared with the index number, and then the update process can be determined. (See Fig. 8-13 process)
도 9a, 9b(이하 도 9로 통칭)은 일 실시예에 따라 OP 계정에 투자자의 토큰 및 차입자의 토큰을 발행하는 프로세스의 흐름도이다.9A and 9B (hereinafter collectively referred to as FIG. 9) are flowcharts of a process of issuing an investor's token and a borrower's token to an OP account according to an embodiment.
1. OPM 에서 투자자 인증 1키를 확인하여 수신: 투자자의 서명된(SigState=1) 인증 1키(도 8-311). 투자자의 사용자 인증 및 투자거래를 블록에 담기 위해서는 서명된 인증 1키를 OPM(500) 에게 넘겨 주어야 OPM 계정이 각 계약을 담당하는 OP 계정을 생성하고 계약 정보를 OP 계정이 받을 수 있게 된다(도 8-1~4 참조) 1. OPM confirms and receives the
2. OPM에서 투자자1키 확인되면 상태값 업데이트 (도 8-1~4 참조).2. When the
3. OP에서 투자자 인증 1키를 OPM에서 받고 상태값 업데이트: OPM->OP 로 투자자 인증 1키를 정상적으로 OP 가 업데이트 받으면 OP_User1H1KeyState = 1 로 업데이트 한다. OP_User1H1KeyState = 1 되면 계약 담당. 계정인 OP 가 본격적으로 계약에 관련된 일을 시작할 수 있게 된다. (도 8- 5번 참조)3. The OP receives the
4. OP에서 OP 계약 계정으로 준비하기: OP_NewContractSet()4. Preparation from OP to OP Contract Account: OP_NewContractSet()
(1) (도 8-2)에서 OPM 이 신규 계약 계정인 OP 를 생성하였다. (도 9-3) 상태와 같이 OP_User1H1KeyState = 1 로 OP가 투자자 아이디에 해당하는 인증 1키를 정상적으로 투자자. 인증1 키 모듈(300)->OPM->OP 로 받았다면 해당 OP 계정에 투자자의 투자계약 계정으로 할당과 투자 계약 넘버를 할당한다. (1) In (Fig. 8-2), OPM created a new contract account, OP. (Fig. 9-3) As shown in the state, OP_User1H1KeyState = 1 so that the OP normally invests the
(2) OPM->OP에서 투자자 인증 1키 관리 함수 OP_TokenHolderHashKey1(OP_User1H1Key)에 보관한 OP용 사용자 인증 1키(OP_User1H1Key) 의 상태값인 OP_User1H1KeyState = 1 이면 해당 OP 공계정을 계약 계정으로 전환(OP_ContractAccountState = 1)하고 투자자가 투자 시 투자 및 대 출 관리 모듈(Investment Module) 에서 받은 투자계약번호를 받아 OP가 관리하는 투자계약번호에 할당 완료되면 상태값을 업데이트(OP_ContractNumState = 1) 한다. (2) If OP_User1H1KeyState = 1, the state value of the OP_User1H1KeyState = 1, which is the state value of the OP_User1H1Key, which is the state value of the OP_TokenHolderHashKey1(OP_User1H1Key) stored in the OP_TokenHolderHashKey1(OP_User1H1Key), the OP public account is converted to a contract account (OP_ContractAccountState = 1) And, when the investor receives the investment contract number received from the investment and loan management module (Investment Module) when investing and allocates it to the investment contract number managed by the OP, the state value is updated (OP_ContractNumState = 1).
5. 상태값 리턴: OP가 계약 계정 상태이고, 투자계약번호 받은 상태 값을 OPM에게 리턴한다.5. Return status value: The OP is in the contract account status and returns the status value received with the investment contract number to OPM.
6. OPM->OP 토큰 전달을 위한 투자자 인증 1키 더블 체크: OPM(500)은 OP에게 투자자용으로 토큰을 발급하기 위해, OPM 계정에서 해당 투자자 아이디와 투자 계약번호에 해당하는 투자자. 인증 1키를 (도6-311)에서 가져와 OP의 투자자. 인증 1키와 대조하여, 인증 1키의 위변조를 판단하기 위해, 매칭이 되면 투자자 아이디 (User1_ID), 에 따른 매칭 상태값(OPM_andOP_H1KeySame = 1)을 저장한다. (Index, User1_ID, ContractNum, OPM_andOP_H1KeySame = 1)6. Investor authentication for OPM->OP
7. 투자계약넘버에 해당하는 투자자 인증 1키 매칭 상태값(OPM_andOP_H1KeySame = 1)이 생성되면 투자자 가 사용할 토큰을 전송하기 위해 토큰 OPM 이 발행할 토큰량을 +1 시키고, 7. When the
8. 토큰 발행을 담당하는 스마트 컨트랙트를 call 한다. (참고로: 토큰 전달 순서는 OPM->OP->투자자 or 차입자 순으로 계약 상태와 각 키의 조건이 매칭되면 토큰을 전송한다.)8. Call the smart contract in charge of issuing tokens. (For reference: The order of token delivery is OPM->OP->Investor or Borrower, and if the contract status and the conditions of each key match, the token is transmitted.)
9. 토큰을 전송 받을 OP 가 할당받은 계약이 정상적으로 시작되었고(InvestState=1) 아직 투자종료(OP_InvestDueTimeState = 0)가 아닌지 확인한다. 9. Confirm that the contract to which the OP to receive the token is assigned has started normally (InvestState=1) and that the investment is not yet closed (OP_InvestDueTimeState = 0).
10. OPM.tokenBePublish(7) 의 토큰 발행량만큼 OPM->OP로 토큰을 1개 전송한다. (6번에서 초기 투자자의 OPM_andOP_H1KeySame = 1 의 Index 값이 1개 이므로 1개만 전송한다.)10. Send 1 token to OPM->OP as much as the token issue amount of OPM.tokenBePublish(7). (In #6, the initial investor's OPM_andOP_H1KeySame = 1 index value is 1, so only 1 is transmitted.)
11. OPM_OPtokenReceiveMethod(): 9번 스마트 컨트랙트에서 토큰을 받으면(tokenID) 상태값으로 OP_TokenReceiveState 를 0에서 1로 업데이트 하고 11.OPM_OPtokenReceiveMethod(): When a token is received from smart contract #9 (tokenID), OP_TokenReceiveState is updated from 0 to 1 as the state value.
12. (OP.address, OP_TokenReceiveState = 1)을 OPM.tokenPublished 로 리턴한다.12. Return (OP.address, OP_TokenReceiveState = 1) to OPM.tokenPublished.
13. 발행된 토큰 관리: 11번에서 토큰을 발행한 주소 및 개수를 OPM.tokenPublished() 업데이트되면, 앞으로 발행할 토큰 예정량 7번에 12번에서 업데이트 받은 만큼 차감시켜 토큰 해킹 및 위변조 가능성을 제어한다.13. Issued token management: If OPM.tokenPublished() is updated with the address and number of tokens issued in #11, the token hacking and forgery possibility is controlled by subtracting the amount updated in #12 from the planned amount of tokens to be issued in the future. .
14. 13번 프로세스에서 토큰 발행된 양 조절 업데이트가 끝남을 OP에게 상태값을 전송하면14. When the status value is sent to the OP when the update of the token issued amount adjustment in
15. 11번에서 받은 토큰을 투자 계약에 배치하기 - OP_opContractTokenDeployInstance( ): OP가 받은 투자자 의 인증 1키의 상태값이 1이고, 해당 투자자 아이디로 토큰을 받은 적이 없는지 확인 후에 OP가 배당받은 투자계약 번호에 투자자용 토큰을 배치하고, 계약에 토큰이 배치되면 OP_User1_TokenIDState=1 로 상태값을 업데이트 한다. (추후 OP가 여기서 받은 토큰을 각종 계약 상태 및 인증 2키 확인 후에 OP->투자자에게 전송함) 15. Placing the token received in #11 into the investment contract-OP_opContractTokenDeployInstance( ): The investment contract for which the OP received dividends after confirming that the status value of the investor's
16. OP 가 관리하는 계약정보에 배치된 총 토큰의 개수를 업데이트 한다. OP_totalTokenReceiveNum(n) - (추후 OPM이 발행한 총 토큰 개수와 비교하여 토큰의 위변조 방지 및 위변조 토큰의 개입을 방지하는데 사용함)16. Update the total number of tokens placed in the contract information managed by the OP. OP_totalTokenReceiveNum(n)-(Used to prevent forgery and alteration of tokens and intervention of forged tokens compared to the total number of tokens issued by OPM in the future)
17. 16번에서 OP 가 관리하는 토큰개수를 18번(OPM_OPcontractSet.OPM_OPtokenReceived) 으로 전송한다.17. In #16, the number of tokens managed by the OP is transmitted to #18 (OPM_OPcontractSet.OPM_OPtokenReceived).
18.
OP 실제 계약에 배치된(Index, OP_User1_TokenIDState=1) 총 토큰의 개수를 업데이트 한다. (13번에서 15번 프로세스 사이에 외부 개입이 일어날 수 있다는 가정을 할 수 있고, P2P에서는 다수의 분산투자가 발생하므로 토큰의 발행량 중요) validateTokenCount() 에서 13번 OPM.tokenPublished(n) 의 개수와 OP_totalTokenReceiveNum(n) 의 n 값이 일치하면 OP계약번호와 상태값을 validateTokenCount(OP.ContractNum, valideTokenNumState=1) 저장 후에 valideTokenNumState=1 을 토큰 정보를 포함하여 OP 전체 계약 정보를 블록에 업데이트 하기 위해서 OP.ContractUpdateValidator() 로 리턴한다.18.
Updates the total number of tokens placed in the OP actual contract (Index, OP_User1_TokenIDState=1). (It can be assumed that external intervention may occur between
19. OPM 토큰 발행량과 OP에 배치된 토큰개수가 맞는 상태값 전달을 ContractUpdateValidator() 에 전달한다.19. Deliver the status value that matches the amount of OPM token issuance and the number of tokens placed on the OP to ContractUpdateValidator().
20.
토큰 정보를 포함하여 전체 투자 계약정보 중간 업데이트하여 블록에 기록하기, ContractUpdateValidator(): 도 8의 670, 671, 672, 651,681,1002 프로세스를 사용하여 블록에 기록한다.20.
Intermediate update of all investment contract information including token information and recording in a block, ContractUpdateValidator(): Records in a
21. 도 8의 670, 671, 672, 651,681,1002 프로세스를 사용하여 블록에 기록한다. 21. Write to the block using the
22.
OPM 에서 차입자 인증 1키 확인하고 받기: (도 8-321번에 해당)22.
Check and receive the
23.
도2의 OPM(550)에서 (도 8-321)의 차입자 인증 1키의 상태값(THHK_User0H1KeyState=1)과 서명 (SigState=1)이 확인되면 OPM의 차입자 인증 1키 관리 함수 OPM_TokenHolderHashKey0() 로 22번의 차 입자 인증 1키(THHK_User0H1Key) 값을 OPM의 차입자 인증 1키 값에 업데이트(OPM_User0H1Key = THHK_User0H1Key.User0_H1Key)하고 완료되면 OPM_User0H1State = 1 로 상태값을 갱신한다. (참고로 OPM. 차입자 인증 1키->OP. 차입자 인증 1키로 업데이트 하기 위한 과정. 즉 22번에서는 트랜잭션(투자나 대출 신청의 이벤트) 이 발생했을 때 사용자 서명된 인증 1키 값을 저장하고 계약 별 OP 계정을 생성시키는 OPM 계정으로 인증 1키를 전송 - 계약 관리자 OP 로 인증 1키를 전달하여 사용자 인증 및 계약 인증키로 사용하는 과정)23.
When the state value (THHK_User0H1KeyState=1) and signature (SigState=1) of the
24. (도 9-3)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함. 24. Description and correspondence of (Fig. 9-3). Applicable entity is the borrower instead of the investor.
25. (도 9-5)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.25. Description and correspondence of (Fig. 9-5). Applicable entity is the borrower instead of the investor.
26. (도 9-6)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.26. Description and correspondence of (Fig. 9-6). Applicable entity is the borrower instead of the investor.
27. (도 9-7)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.27. Description and correspondence of (Fig. 9-7). Applicable entity is the borrower instead of the investor.
28. (도 9-8)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.28. Description and correspondence of (Fig. 9-8). Applicable entity is the borrower instead of the investor.
29. (도 9-9)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.29. Description and correspondence of (Fig. 9-9). Applicable entity is the borrower instead of the investor.
30. (도 9-10)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.30. Description and correspondence of (Fig. 9-10). Applicable entity is the borrower instead of the investor.
31. (도 9-11)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.31. Description and correspondence of (Fig. 9-11). Applicable entity is the borrower instead of the investor.
32. (도 9-12)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.32. Description and correspondence of (Fig. 9-12). Applicable entity is the borrower instead of the investor.
33. (도 9-13)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.33. Description and correspondence of (Fig. 9-13). Applicable entity is the borrower instead of the investor.
34. (도 9-14)의 설명과 대응. 적용 주체를 투자자 대신 차입자로 함.34. Description and correspondence of (Figs. 9-14). Applicable entity is the borrower instead of the investor.
35. 31번에서 받은 토큰을 대출 희망금을 달성한(bondRight=1) 채권(bondName)에 배치, OP_SelectedBondName(bondName, bondRight=1): OP_opContractTokenDeployInstance( ): OP가 받은 차입자의 인증 1키의 상태값이 1(OP_User0H1KeyState=1)이고, 해당 차입자 아이디로 토큰을 받은 적이 없는지(UserID.OP_ReveivedTokenID !=null) 확인 후에 OP가 배당 받은 투자계약번호에 속해있는 대출 계약에 토큰을 배치(OP_SelectedBondName.OP_User0_TokenID = OP_ReceivedTokenID)하고, 토큰이 배치되면 OP_User0_TokenIDState=1 로 상태값을 업데이트 함. (참고로 추후 OP가 여기서 받은 토큰을 각 종 계약 상태 및 인증 2키 확인 후에 OP->차입자에게 전송함.)35. Place the token received in #31 on the bond(bondName) that achieved the desired loan amount (bondRight=1), OP_SelectedBondName(bondName, bondRight=1): OP_opContractTokenDeployInstance( ): The status value of the borrower's
36. OP 가 관리하는 대출계약정보에 배치된 총 토큰의 개수를 업데이트 한다. OP_totalTokenReceiveNum(n): 차입자의 경우 투자자의 10회 분산 투자 중 10=>n 횟수로 대출성공이 일어날 수 있으므로, 대출 성공한 채권 SelectedBondName(Index, bondName, bondRight=1) 들의 Index 값의 횟수만큼 OP_User0_TokenIDState = 1 값이(35번) 생성되므로 이 값(i)만큼 n 값을 누적 증강 시켜, 단일 투자 건에서 대출 성공한 차입자의 토큰 개수를 카운팅한다.36. Updates the total number of tokens placed in the loan contract information managed by the OP. OP_totalTokenReceiveNum(n): In the case of a borrower, loan success can occur 10=>n times out of 10 diversified investments of an investor, so OP_User0_TokenIDState = 1 as much as the number of index values of the selected bonds SelectedBondName(Index, bondName, bondRight=1) with successful loans. Since the value is generated (35 times), the number of tokens of the borrower who succeeded in lending from a single investment is counted by accumulating and increasing n value by this value (i).
37. (도 9-17)의 설명과 대응.37. Description and correspondence of (Figs. 9-17).
38. (도 9-18)의 설명과 대응.38. Description and correspondence of (Figs. 9-18).
39. (도 9-19)의 설명과 대응.39. Description and correspondence of (Fig. 9-19).
40. (도 9-20)의 설명과 대응.40. Description and correspondence of (Fig. 9-20).
도 10a, 10b(이하 도 10로 통칭)은 일 실시예에 따라 인증 2키를 생성하고 투자자의 계정 및 차입자의 계정에 토큰을 발행하는 프로세스의 흐름도이다.10A and 10B (hereinafter collectively referred to as FIG. 10) are flowcharts of a process of generating an
1. 투자자1의 분산투자 계약123으로 차입자들에게 희망 대출금이 지급되면 토큰을 지급한다.1. Tokens are paid when the desired loan is paid to borrowers through
2. 차입자들이 토큰을 지급받으면 해당 분산투자 계약건에 대해서 투자자1은 원리금 수취권을 부여 받고, 이에 대 한 권리 증거로 투자자1도 토큰을 지급 받는다. 역으로 표현하면 원리금 수취권에 대한 토큰을 다른 사용자가 받는 일이 생기거나 해킹을 당하는 일이 없도록 하는 것이 중요하다.2. When borrowers receive tokens,
3. 본 문서의 실시예에서는 토큰을 사용하여, i) 투자자는 원리금 수취권과 같은 디지털 자산 증명, 해당 디지털 자산의 분할 판매에 사용할 수 있고, ii) 차입자는 대출금 분할 상환 증명용도로 사용할 수 있게 한다. (다수의 P2P 업체들이 참여하는 디지털 자산을 거래하는 거래소에서 차입자의 분할 상환을 투자자의 자산에 반영하기 위해서는 이기종의 플랫폼을 사용하는 P2P 대출 회사들이 거래소에 참여하기 때문에 블록체인기반의 토큰을 사용한 차입자의 상환증명은 데이터 훼손 없이 블록체인의 장점을 제공 가능하게 한다)3. In the embodiment of this document, a token is used, i) an investor can use it to prove digital assets such as principal and interest receivables, and to sell the corresponding digital asset in installments, and ii) a borrower can use it to prove the amortization of loans. (In order to reflect the amortization of borrowers on the assets of investors in exchanges where digital assets participated by many P2P companies, P2P loan companies using heterogeneous platforms participate in the exchange, so borrowers using blockchain-based tokens Proof of redemption makes it possible to provide the advantages of blockchain without data damage)
4. 토큰 전송을 위해서는 시스템 (OPM - 500)에서 발행한 토큰(tokenId=23452) 아이디의 고유번호로 전송을 할 수 있다. [예: _transferTokenTo(to, tokenId)]4. For token transmission, it can be transmitted to the unique number of the ID of the token (tokenId=23452) issued by the system (OPM-500). [Example: _transferTokenTo(to, tokenId)]
5. 이를 가능하게 하기 위해서 차입자와 참여자를 위한 토큰(tokenId) 의 신중한 전송이 요구되는데, 해당 토큰 아이디를 사용하여 유니크한 인증 2키를 생성, 계약 참여자(차입자, 투자자)의 각 계약정보에 이식하여 각 계약 단계별로 인증 2키(reExshKey2)의 상태값을 계약정보와 연동하여 생성, 업데이트 및 검증하여 올바른 참여자가 해당 토큰을 정상적인 계약 상태에서 부여받을 수 있도록 하는 것이 전체 개발의 목적이다. 해당 토큰(tokenId)이 각 투자나 대출 계약과 어떤 긴밀한 연관성(검증에 따른 상태값)을 갖고 계약정보들을 통과된 토큰이 아니면, 다른 개입자가 임의의 토큰을 전송하여 권리 증명을 할 수도 있는 가능성이 있으므로, 인증 2키의 사용은 블록체인 기반 토큰으로 디지털 자산을 증명하고 거래하는 데에 필요하다.5. In order to make this possible, careful transmission of tokens (tokenId) for borrowers and participants is required. A
6. 인증 2키 (ExKey) 의 구성 및 생성 방법: 차입자 관점에서 설명 (투자자도 동일). : 아래 구성요소에 해당 하는 동일한 키 값들을 OP 에서 차입자의 채권 상태가 희망 대출금을 분산투자로 확보(bondName, bondRight=1) 되었을 때 먼저 생성하여 제1 스마트 컨트랙트(Smart Contract1) 로 보내고(S0.key), 차입자에게 분산 투자 모집이 성공하여 대출금을 지급할 시점이 되었을 때, 차입자쪽(150)에서 Off-chain 에서 보관하고 있는 차입자 정보들을 사용하여 인증 2키를 생성 -> 제2 스마트 컨트랙트(Smart Contract2) 로 전송(S1.key) 한다. 제2 스마트 컨트랙트에서 S0.key 과 S1.key 키를 대조하여 매칭이 되면 매칭 성공 상태값 (OP_andUser0exKey0same = 1)을 OP 가 담당하는 채권정보 쪽에 저장 후, 정상적으로 신청 대출금을 차입자 에게 입금하고, OP가 채권정보에 보관하고 있던 차입자용 토큰을 차입자에게 전송한다.6. Authentication 2Key (ExKey) composition and generation method: Explained from the borrower's point of view (same for investors). : The same key values corresponding to the following components are first created and sent to the first smart contract (Smart Contract1) when the borrower's bond status at the OP is secured as a diversified investment (bondName, bondRight=1) (S0. key), When it is time to pay the loan due to the successful recruitment of diversified investments to the borrower, the borrower 150 generates
7. 인증 2키 구성요소 7.
(1) 인증 2키의 OP 쪽의 구성요소는 OP_ExkeySet[(User0_PublicKey, User0_TokenID, OP_User0H1Key, OP_PublicKey, OP_ExSetTime] 이다. 해당 구성요소를 사용하여 담당 OP계정 의 Private Key 로 Singing 하여 Hash 값을 생성한다. -> 스마트 컨트랙트1(Smart Contract1) 로 전송.(1) The component on the OP side of the
1) User0_PublicKey: 차입자 공개키1) User0_PublicKey: Borrower public key
2) User0_TokenID: OP 의 투자 채권계약에 배치된 차입자용 토큰아이디2) User0_TokenID: Token ID for borrowers placed in OP's investment bond contract
3) OP_User0H1Key: 차입자 인증 1키3) OP_User0H1Key:
4) OP_PublicKey: 계약 OP 계정의 공개키4) OP_PublicKey: The public key of the contract OP account
5) OP_ExSetTime: 인증 2키를 최초로 시스템에서 생성하기 위해 구성 요소들을 OP_ExkeySet() 으로 가져 왔을 때의 시간 system.time() 이다. 즉, system.time() 은 상기 1)~4) 정보가 인증 2키 생성 함수 OP_ExkeySet()로 입력되었을 때의 시간.5) OP_ExSetTime: This is the time when the components are brought to OP_ExkeySet() to generate the
(2) 인증 2키의 차입자 측의 구성요소도 역시 1번과 같은데, 차입자에게 대출신청금액을 지급 시, 인증 2키의 구성요소 중 차입자의 User0_Tokenindex(150) 에서 위 (1)-1), (1)-3) 을 Identity & Key Services 모듈에서 가져와서 OP쪽의 (1)-2), (1)-4), (1)-5) 와 합쳐서 비밀키로 서명하여 해쉬 값을 생성한 후 -> 제2 스마트 컨트랙트(Smart Contract2) 로 전송한 후 매칭 작업을 실행하는 과정이다. (블록체인에서는 기본적으로 off-chain에 저장된 모든 데이터는 시간이 경과할수록 신뢰하지 않는다는 가정에서 출발하므로 User0_Tokenindex(150) 에서 있는 차입자의 (1)-1), (1)-3) 은 훼손되었다고 시스템은 가정하고 인증 2키의 프로세스를 진행한다)(2) The components of the borrower's side of the
상술한 실시예에 따르면 P2P 대출 행위를 수행함에 있어서, 블록체인 기반의 서비스 장치가 사용자의 블록체인 지갑을 직접 관리하여, 사용자로 하여금 직접 블록체인 지갑을 사용하는 일이 없게 하여 불편을 해소하고, 모든 거래의 자격증명과 인증을 중계하여 블록체인의 장점을 제공하는 효과가 있다. According to the above-described embodiment, in performing P2P lending, the blockchain-based service device directly manages the user's blockchain wallet, thereby eliminating the inconvenience by preventing the user from using the blockchain wallet directly, It has the effect of providing the advantages of blockchain by relaying the credentials and authentication of all transactions.
또한, 사용자의 요청에 대한 수행이 완료된 것을 증명하면서 양도 가능한 사용자 고유 토큰을 발행하여, P2P 대출에 따른 원리금 수취권이나 채무 상태를 증명하면서 사용자의 권리나 채무를 양도할 수 있게 한다. In addition, by issuing a transferable user's own token while proving that the user's request has been completed, it is possible to transfer the user's rights or liabilities while proving the right to receive principal and interest or the status of the debt according to the P2P loan.
나아가 현실 세계에 존재하는 여러 자산 권리를 각종 토큰화된 디지털 자산으로 증명하고 이와 관련된 참여자의 자격증명, 각종 자산의 등록 및 거래 증명에 대한 신뢰할 수 있는 자동화된 공증 기능을 제공할 수 있다.Furthermore, it is possible to prove various asset rights existing in the real world with various tokenized digital assets, and provide a reliable automated notarization function for the relevant participants' credentials, registration of various assets, and proof of transactions.
상술한 본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.The embodiments of the present invention described above can be implemented through various means. For example, embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.In the case of hardware implementation, the method according to embodiments of the present invention includes one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), and Programmable Logic Devices (PLDs). , Field Programmable Gate Arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드 등이 기록된 컴퓨터 프로그램은 컴퓨터 판독 가능 기록 매체 또는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 메모리 유닛은 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고 받을 수 있다.In the case of implementation by firmware or software, the method according to the embodiments of the present invention may be implemented in the form of a module, procedure, or function that performs the functions or operations described above. A computer program in which software codes and the like are recorded may be stored in a computer-readable recording medium or a memory unit and driven by a processor. The memory unit may be located inside or outside the processor, and may exchange data with the processor through various known means.
또한 본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방법으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.In addition, combinations of each block of the block diagram attached to the present invention and each step of the flowchart may be performed by computer program instructions. Since these computer program instructions can be mounted on the encoding processor of a general-purpose computer, special purpose computer or other programmable data processing equipment, the instructions executed by the encoding processor of the computer or other programmable data processing equipment are each block of the block diagram or Each step of the flow chart will create a means to perform the functions described. These computer program instructions can also be stored in computer-usable or computer-readable memory that can be directed to a computer or other programmable data processing equipment to implement a function in a particular way, so that the computer-usable or computer-readable memory It is also possible to produce an article of manufacture in which the instructions stored in the block diagram contain instruction means for performing the functions described in each block or flow chart. Computer program instructions can also be mounted on a computer or other programmable data processing equipment, so that a series of operating steps are performed on a computer or other programmable data processing equipment to create a computer-executable process to create a computer or other programmable data processing equipment. It is also possible for the instructions to perform the processing equipment to provide steps for performing the functions described in each block of the block diagram and each step of the flowchart.
더불어 각 블록 또는 각 단계는 특정된 논리적 기능을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또한 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.In addition, each block or each step may represent a module, segment, or part of code including one or more executable instructions for executing a specified logical function. It should also be noted that in some alternative embodiments, the functions mentioned in blocks or steps may occur out of order. For example, two blocks or steps shown in succession may in fact be performed substantially simultaneously, or the blocks or steps may sometimes be performed in the reverse order depending on the corresponding function.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다. As such, those skilled in the art to which the present invention pertains will be able to understand that the present invention can be implemented in other specific forms without changing the technical spirit or essential features. Therefore, the embodiments described above are illustrative in all respects and should be understood as non-limiting. The scope of the present invention is indicated by the claims to be described later rather than the detailed description, and all changes or modified forms derived from the meaning and scope of the claims and their equivalent concepts should be interpreted as being included in the scope of the present invention. .
Claims (15)
사용자의 블록체인 계정을 생성, 상기 사용자의 고유 정보를 암호화한 인증 1키를 생성, 및 상기 인증 1키를 포함하는 정보를 암호화한 TxID를 생성하고 off-chain DB에 저장하는 단계;
상기 TxID를 포함하는 데이터를 상기 장치가 관리하는 블록체인 계정인 OPM(operator master)의 비대칭키로 암호화한 Key Value을 상기 DB에 저장 및 on-chain에 업로드하는 단계; 및
상기 사용자로부터 소정의 동작에 대한 요청을 수신하는 경우, 상기 요청 시점 이후 인증 1키를 재생성하고, 상기 on-chain에 업로드된 Key Value를 기초로 상기 DB에 저장된 Key Value를 검색하고, 상기 검색된 Key Value를 상기 비대칭키의 대응키로 복호화하여 구한 인증 1키와 상기 재생성된 인증 1키를 비교하는 위변조 판단을 기초로 상기 요청에 대한 수행을 결정하는 단계를 포함하는,
자율보증증명 방법.
In the self-assurance method performed by a blockchain-based service device,
Creating a user's blockchain account, generating an authentication 1 key by encrypting the user's unique information, and generating a TxID by encrypting information including the authentication 1 key and storing it in an off-chain DB;
Storing a key value encrypted with an asymmetric key of an operator master (OPM), which is a block chain account managed by the device, in the DB and uploading to the on-chain data including the TxID; And
When receiving a request for a predetermined operation from the user, the authentication 1 key is regenerated after the request point, the Key Value stored in the DB is searched based on the Key Value uploaded to the on-chain, and the searched Key Comprising the step of determining the execution of the request based on a forgery determination of comparing the regenerated authentication 1 key with the authentication 1 key obtained by decrypting the value with the corresponding key of the asymmetric key,
Self-guaranteed certification method.
상기 사용자의 고유 정보는,
사용자 ID, 사용자 블록체인 계정 주소, 공개키, 및 사용자 가상계좌 번호를 상기 사용자의 첫 로그인 시간 정보를 비밀키로 하여 SHA 알고리즘을 기초로 암호화한 TokenHolderKey를 포함하는,
자율보증증명 방법.
The method of claim 1,
The unique information of the user,
Including a TokenHolderKey that encrypts a user ID, a user blockchain account address, a public key, and a user virtual account number based on the SHA algorithm using the first login time information of the user as a secret key,
Self-guaranteed certification method.
상기 인증 1키는,
사용자 ID, 상기 TokenHolderKey 및 상기 TokenHolderKey가 생성된 시간 정보를 함께 SHA 알고리즘을 기초로 암호화하여 생성된 TokenHolderHashKey 를 포함하는,
자율보증증명 방법.
The method of claim 2,
The authentication 1 key,
Including a TokenHolderHashKey generated by encrypting the user ID, the TokenHolderKey, and the time information at which the TokenHolderKey was generated together based on the SHA algorithm,
Self-guaranteed certification method.
상기 Key Value는,
상기 인증 1키를 특정하는 인덱스 번호와 함께 상기 TxID를 OPM의 비밀키 또는 공개키로 암호화하여 생성되는,
자율보증증명 방법.
The method of claim 3,
The Key Value is,
Generated by encrypting the TxID with an OPM secret key or a public key together with an index number specifying the authentication 1 key,
Self-guaranteed certification method.
상기 사용자는 P2P 대출 서비스를 사용하는 투자자 및 차입자를 포함하고, 상기 요청은 상기 차입자의 대출 요청과 및 상기 대출에 대한 상기 투자자의 투자 실행 요청을 포함하고,
상기 실행을 결정하는 단계는,
상기 차입자의 대출 요청을 수신하는 경우, 상기 차입자에 대한 소정의 대출 심사에 기초하여 상기 대출 요청 시점 이후 상기 차입자의 인증 1키를 재생성하고, 상기 차입자에 대한 대출 정보를 생성하는 단계;
상기 대출 요청에 대해 상기 투자자의 투자 요청을 수신하는 경우, 상기 투자 요청 시점 이후 상기 투자자의 인증 1키를 재생성하고, 상기 on-chain에 업로드된 상기 투자자의 Key Value를 기초로 상기 DB에 저장된 상기 투자자의 Key Value를 검색하고 상기 OPM의 비대칭키로 복호화하여 구한 상기 투자자의 인증 1키를, 상기 재생성된 투자자의 인증 1키와 비교하여 위변조 판단하여 상기 대출 정보에 대한 상기 투자자의 투자 계약 여부를 결정하는 단계; 및
상기 대출 요청에 따른 투자 계약이 성립하면, 상기 on-chain에 업로드된 상기 차입자의 Key Value를 기초로 상기 off-chain DB에 저장된 상기 차입자의 Key Value를 검색하고 상기 OPM의 비대칭키로 복호화하여 구한 상기 차입자의 인증 1키를, 상기 재생성된 차입자의 인증 1키와 비교하여 위변조 판단하여, 상기 대출 요청과 관련하여 on-chain에 기록할 차입자 정보 및 상기 투자 요청과 관련하여 on-chain에 기록할 투자자 정보를 생성하는 단계를 포함하는,
자율보증증명 방법.
The method of claim 1,
The user includes an investor and a borrower who use a P2P loan service, and the request includes a loan request of the borrower and a request for investment execution of the investor in the loan,
The step of determining the execution,
Upon receiving a loan request from the borrower, regenerating an authentication 1 key of the borrower after the loan request point in time based on a predetermined loan examination for the borrower, and generating loan information for the borrower;
When receiving an investment request from the investor in response to the loan request, the investor's authentication 1 key is regenerated after the time of the investment request, and stored in the DB based on the investor's Key Value uploaded to the on-chain. The investor's authentication 1 key obtained by searching for the investor's key value and decrypting it with the asymmetric key of the OPM is compared with the regenerated investor's authentication 1 key to determine forgery and forgery to determine whether the investor has an investment contract for the loan information Step to do; And
When the investment contract according to the loan request is established, the key value of the borrower stored in the off-chain DB is searched based on the key value of the borrower uploaded to the on-chain, and the obtained by decryption with the asymmetric key of the OPM. The borrower's authentication 1 key is compared with the regenerated borrower's authentication 1 key to determine forgery, and the information of the borrower to be recorded on-chain in relation to the loan request and the investor to record on-chain in relation to the investment request Comprising the step of generating information,
Self-guaranteed certification method.
상기 투자자 정보를 생성하는 단계는,
상기 대출 요청에 기 설정된 금액이 상기 투자자의 투자 요청에 의해 모두 모금되는 경우에만 실행되도록 설정된,
자율보증증명 방법.
The method of claim 5,
The step of generating the investor information,
Set to be executed only when the amount preset in the loan request is raised by the investor's investment request,
Self-guaranteed certification method.
상기 요청에 대한 수행을 결정하는 단계 이후,
상기 OPM 계정을 통해 상기 요청의 실행을 관리하는 스마트 컨트랙트에 상기 요청이 실행됨에 따른 사용자의 상태를 증명하는 토큰 발행이 수행되도록 하는 트랜잭션을 생성하고 상기 DB에 접근 권한이 있는 블록체인 계정인 OP(operator) 계정을 생성하는 단계;
상기 OPM 계정을 통해 상기 on-chain에 업로드된 Key Value를 복호화하여 구한 인증 1키를 상기 OP 계정에 전송하는 단계; 및
상기 OP 계정이 상기 OPM 계정으로부터 전송 받은 인증 1키와 상기 DB에 저장된 TxID로부터 추출한 인증 1키를 비교하도록 하는 위변조 판단을 기초로 상기 트랜잭션 생성을 결정하는 단계를 더 포함하는,
자율보증증명 방법.
The method of claim 1,
After the step of determining the execution of the request,
Through the OPM account, a smart contract that manages the execution of the request creates a transaction that allows the issuance of a token that certifies the user's status when the request is executed, and is a blockchain account OP ( operator) creating an account;
Transmitting an authentication 1 key obtained by decrypting the Key Value uploaded to the on-chain through the OPM account to the OP account; And
Further comprising the step of determining the transaction creation based on a forgery determination for the OP account to compare the authentication 1 key transmitted from the OPM account with the authentication 1 key extracted from the TxID stored in the DB,
Self-guaranteed verification method.
상기 트랜잭션 생성을 결정하는 단계 이후,
상기 OPM 계정이 상기 OP 계정으로부터 상기 인증 1키를 다시 전송받고, 상기 다시 전송 받은 인증 1키를 상기 재생성된 인증 1키와 비교하여 상기 OP 계정이 보유하고 있는 인증 1키의 유효성을 판단하는 단계;
상기 인증 1키가 유효하면, 상기 OPM 계정이 상기 스마트 컨트랙트에 소정 수량의 토큰 발행 트랜잭션을 전송하여 상기 토큰이 상기 OP 계정에 지급되도록 하는 단계; 및
상기 OPM 계정이 상기 OP 계정이 수신한 토큰 개수가 상기 소정 수량과 일치하는 지를 판별하여 일치하는 경우, 상기 OP 계정이 상기 토큰 발행에 대한 사실을 블록에 기록하는 단계를 포함하는,
자율보증증명 방법.
The method of claim 7,
After the step of determining the transaction creation,
The OPM account receives the authentication 1 key again from the OP account, and compares the re-transmitted authentication 1 key with the regenerated authentication 1 key to determine the validity of the authentication 1 key held by the OP account ;
If the authentication 1 key is valid, the OPM account transmits a token issuance transaction of a predetermined amount to the smart contract so that the token is paid to the OP account; And
If the OPM account determines whether the number of tokens received by the OP account matches the predetermined quantity and matches, the OP account records the fact of the token issuance in a block,
Self-guaranteed certification method.
상기 토큰 발행에 대한 사실을 블록에 기록하는 단계 이후,
상기 OP 계정이 보유한 소정의 정보를 기초로 상기 토큰의 전송에 사용되는 인증 2키 생성하고 제1 스마트 컨트랙트에 전송하게 하는 단계;
상기 요청에 대한 수행이 완료된 것으로 판별되면, 상기 DB가 저장한 소정의 정보를 기초로 상기 토큰의 전송에 사용되는 인증 2키 생성하고, 상기 제1 스마트 컨트랙트가 인증 2키를 비교하도록 규약이 정해진 상기 제2 스마트 컨트랙트에, 상기 DB로부터 생성된 인증 2키를 전송하게 하는 단계; 및
상기 제2 스마트 컨트랙트의 비교 결과 상기 인증 2키가 동일한 것으로 정보를 수신하면, 상기 인증 2키를 상기 DB에 저장하고, 상기 사용자에게 토큰을 지급하는 단계를 더 포함하고,
상기 토큰은 상기 사용자의 요청에 대한 수행이 완료된 것을 증명하는 용도로 사용되는,
자율보증증명 방법.
The method of claim 8,
After the step of recording the fact of the token issuance in a block,
Generating an authentication 2 key used for transmission of the token based on predetermined information held by the OP account and transmitting it to a first smart contract;
When it is determined that the execution of the request is complete, a protocol is established so that authentication 2 keys used for transmission of the token are generated based on predetermined information stored by the DB, and the first smart contract compares the authentication 2 keys. Transmitting the authentication 2 key generated from the DB to the second smart contract; And
When receiving information that the authentication 2 keys are the same as a result of the comparison of the second smart contract, storing the authentication 2 keys in the DB and providing a token to the user,
The token is used to prove that the execution of the user's request has been completed,
Self-guaranteed certification method.
상기 OP 계정이 보유한 소정의 정보 및 상기 DB가 저장한 소정의 정보는 각각,
상기 사용자의 공개키, 상기 토큰의 식별 정보, 및 상기 사용자의 인증 1키와, 상기 소정의 정보가 인증 2키 생성 함수로 입력되었을 때의 시간 정보를 포함하고,
상기 인증 2키는,
상기 소정의 정보가 상기 OP 계정의 비밀키로 암호화되어 생성되는,
자율보증증명 방법.
The method of claim 9,
The predetermined information held by the OP account and the predetermined information stored by the DB are each,
The user's public key, identification information of the token, and authentication 1 key of the user, and time information when the predetermined information is input by an authentication 2 key generation function,
The authentication 2 key,
The predetermined information is generated by encryption with the secret key of the OP account,
Self-guaranteed certification method.
상기 on-chain에 기록할 투자자 정보를 생성하는 단계 이후,
상기 OPM 계정을 통해 상기 요청의 실행을 관리하는 스마트 컨트랙트에 상기 투자 계약에 따른 차입자 및 투자자의 상태를 증명하는 토큰 발행이 수행되도록 하는 트랜잭션을 생성하고 상기 DB에 접근 권한이 있는 블록체인 계정인 OP(operator) 계정을 생성하는 단계;
상기 OPM 계정을 통해 상기 on-chain에 업로드된 상기 투자자의 Key Value를 복호화하여 구한 상기 투자자의 인증 1키를 상기 OP 계정에 전송하고, 상기 OP 계정이 상기 OPM 계정으로부터 전송 받은 상기 투자자의 인증 1키와 상기 DB에 저장된 상기 투자자의 TxID로부터 추출한 인증 1키를 비교하도록 하는 제1 위변조 판단 단계;
상기 OPM 계정을 통해 상기 on-chain에 업로드된 상기 차입자의 Key Value를 복호화하여 구한 상기 차입자의 인증 1키를 상기 OP 계정에 전송하고, 상기 OP 계정이 상기 OPM 계정으로부터 전달받은 상기 차입자의 인증 1키와 상기 DB에 저장된 상기 차입자의 TxID로부터 추출한 인증 1키를 비교하도록 하는 제2 위변조 판단 단계; 및
상기 제1 및 제2 위변조 판단을 기초로 상기 트랜잭션 생성을 결정하는 단계를 더 포함하는,
자율보증증명 방법.
The method of claim 5,
After the step of creating investor information to be recorded in the on-chain,
Through the OPM account, an OP, a blockchain account that has access to the DB, creates a transaction for issuing tokens that certify the status of the borrower and investor according to the investment contract in a smart contract that manages the execution of the request. (operator) creating an account;
The investor's authentication 1 key obtained by decrypting the investor's key value uploaded to the on-chain through the OPM account is transmitted to the OP account, and the investor's authentication 1 that the OP account received from the OPM account A first forgery determination step of comparing a key with an authentication 1 key extracted from the investor's TxID stored in the DB;
The borrower's authentication 1 key obtained by decrypting the borrower's Key Value uploaded to the on-chain through the OPM account is transmitted to the OP account, and the OP account is the borrower's authentication 1 received from the OPM account. A second forgery determination step of comparing a key with an authentication 1 key extracted from the borrower's TxID stored in the DB; And
Further comprising the step of determining the transaction creation based on the first and second forgery determination,
Self-guaranteed certification method.
상기 트랜잭션 생성을 결정하는 단계 이후,
상기 OPM 계정이 상기 OP 계정으로부터 상기 투자자의 인증 1키를 다시 전송받고, 상기 다시 전송 받은 투자자의 인증 1키를 상기 투자자의 재생성된 인증 1키와 비교하여 상기 OP 계정이 보유하고 있는 투자자의 인증 1키의 유효성을 판단하는 단계;
상기 투자자의 인증 1키가 유효하면, 상기 OPM 계정이 상기 스마트 컨트랙트에 소정 수량의 토큰 발행 트랜잭션을 전송하여 제1 토큰이 상기 OP 계정에 지급되도록 하는 단계;
상기 OPM 계정이 상기 OP 계정이 수신한 제1 토큰 개수가 상기 소정 수량과 일치하는 지를 판별하여 일치하는 경우, 상기 OP 계정이 상기 제1 토큰 발행에 대한 사실을 블록에 기록하는 단계;
상기 OPM 계정이 상기 OP 계정으로부터 상기 차입자의 인증 1키를 다시 전송 받고, 상기 다시 전송 받은 차입자의 인증 1키를 상기 차입자의 재생성된 인증 1키와 비교하여 상기 OP 계정이 보유하고 있는 상기 차입자의 인증 1키의 유효성을 판단하는 단계;
상기 차입자의 인증 1키가 유효하면, 상기 OPM 계정이 상기 스마트 컨트랙트에 소정 수량의 토큰 발행 트랜잭션을 전송하여 제2 토큰이 상기 OP 계정에 지급되도록 하는 단계; 및
상기 OPM 계정이 상기 OP 계정이 수신한 제2 토큰 개수가 상기 소정 수량과 일치하는 지를 판별하여 일치하는 경우, 상기 OP 계정이 상기 제2 토큰 발행에 대한 사실을 블록에 기록하는 단계를 더 포함하는,
자율보증증명 방법.
The method of claim 11,
After the step of determining the transaction creation,
The OPM account receives the investor's authentication 1 key from the OP account again, and compares the re-transmitted investor's authentication 1 key with the regenerated authentication 1 key of the investor to authenticate the investor held by the OP account. Determining the validity of one key;
If the investor's authentication 1 key is valid, the OPM account transmits a token issuance transaction of a predetermined amount to the smart contract so that the first token is paid to the OP account;
The OPM account determining whether the number of first tokens received by the OP account coincides with the predetermined quantity and, if the coincidence, recording the fact of issuance of the first token by the OP account in a block;
The OPM account receives the borrower's authentication 1 key from the OP account again, and compares the retransmitted borrower's authentication 1 key with the regenerated authentication 1 key of the borrower, Determining the validity of the authentication 1 key;
If the borrower's authentication 1 key is valid, the OPM account transmits a token issuance transaction of a predetermined amount to the smart contract so that a second token is paid to the OP account; And
If the OPM account determines whether the number of second tokens received by the OP account matches the predetermined quantity and matches, the OP account records the fact of issuance of the second token in a block. ,
Self-guaranteed certification method.
상기 제1 및 제2 토큰 발행에 대한 사실을 블록에 기록하는 단계 이후, 상기 투자자 및 상기 차입자 각각에 대하여,
상기 OP 계정이 보유한 소정의 정보를 기초로 상기 제1 및 제2 토큰의 전송에 사용되는 인증 2키 생성하고 제1 스마트 컨트랙트에 전송하게 하는 단계;
상기 요청에 대한 수행이 완료된 것으로 판별되면, 상기 DB가 저장한 소정의 정보를 기초로 상기 제1 및 제2 토큰의 전송에 사용되는 인증 2키 생성하고, 상기 제1 스마트 컨트랙트가 인증 2키를 비교하도록 규약이 정해진 상기 제2 스마트 컨트랙트에, 상기 DB로부터 생성된 인증 2키를 전송하게 하는 단계; 및
상기 제2 스마트 컨트랙트의 비교 결과 상기 인증 2키가 동일한 것으로 정보를 수신하면, 상기 인증 2키를 상기 DB에 저장하고, 상기 투자자 및 차입자 각각에게 상기 제1 및 제2 토큰을 지급하는 단계를 더 포함하고,
상기 제1 토큰은 상기 투자자의 원리금 수취권을 증명하는 용도로 사용되고, 상기 제2 토큰은 상기 차입자의 대출 채무를 증명하는 용도로 사용되는,
자율보증증명 방법.
The method of claim 12,
After the step of recording the facts on the issuance of the first and second tokens in a block, for each of the investor and the borrower,
Generating two authentication keys used for transmission of the first and second tokens based on predetermined information held by the OP account and transmitting them to a first smart contract;
When it is determined that the execution of the request has been completed, based on the predetermined information stored by the DB, authentication 2 keys used for transmission of the first and second tokens are generated, and the first smart contract generates an authentication 2 key. Transmitting the authentication 2 key generated from the DB to the second smart contract for which a rule is determined to be compared; And
If information is received that the authentication 2 keys are the same as a result of the comparison of the second smart contract, storing the authentication 2 keys in the DB and providing the first and second tokens to each of the investor and the borrower are further performed. Including,
The first token is used to prove the right to receive principal and interest of the investor, and the second token is used to prove the borrower's loan debt,
Self-guaranteed certification method.
소정의 동작을 수행하도록 하는 명령어들을 저장하는 하나 이상의 메모리; 및 상기 하나 이상의 메모리와 동작 가능 하도록 연결되어 상기 명령어들을 실행하도록 설정된 하나 이상의 프로세서를 포함하고,
상기 하나 이상의 프로세서는,
사용자의 블록체인 계정을 생성, 상기 사용자의 고유 정보를 암호화한 인증 1키를 생성, 및 상기 인증 1키를 포함하는 정보를 암호화한 TxID를 생성하고 off-chain DB에 저장하는 동작;
상기 TxID를 포함하는 데이터를 상기 장치가 관리하는 블록체인 계정인 OPM(operator master)의 비대칭키로 암호화한 Key Value을 상기 DB에 저장 및 on-chain에 업로드하는 동작; 및
상기 사용자로부터 소정의 동작에 대한 요청을 수신하는 경우, 상기 요청 시점 이후 인증 1키를 재생성하고, 상기 on-chain에 업로드된 Key Value를 기초로 상기 DB에 저장된 Key Value를 검색하고, 상기 검색된 Key Value를 상기 비대칭키의 대응키로 복호화하여 구한 인증 1키와 상기 재생성된 인증 1키를 비교하는 위변조 판단을 기초로 상기 요청에 대한 수행을 결정하는 동작을 수행하는,
블록체인 기반의 서비스 장치.
In a blockchain-based service device,
At least one memory for storing instructions for performing a predetermined operation; And one or more processors connected to be operable with the one or more memories and configured to execute the instructions,
The one or more processors,
Creating a user's blockchain account, generating an authentication 1 key by encrypting the user's unique information, and generating a TxID by encrypting information including the authentication 1 key and storing it in an off-chain DB;
Storing a key value encrypted with an asymmetric key of an operator master (OPM), which is a block chain account managed by the device, in the DB and uploading to the on-chain data including the TxID; And
When receiving a request for a predetermined operation from the user, the authentication 1 key is regenerated after the request point, the Key Value stored in the DB is searched based on the Key Value uploaded to the on-chain, and the searched Key Performing an operation of determining execution of the request based on a forgery determination of comparing the authentication 1 key obtained by decrypting the value with the corresponding key of the asymmetric key and the regenerated authentication 1 key,
Blockchain-based service device.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20190095196 | 2019-08-05 | ||
KR1020190095196 | 2019-08-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210017964A true KR20210017964A (en) | 2021-02-17 |
KR102324155B1 KR102324155B1 (en) | 2021-11-10 |
Family
ID=74731344
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190121495A KR102321437B1 (en) | 2019-08-05 | 2019-10-01 | P2p loan server, method and computer program through relationship banking based on machine learning |
KR1020190121493A KR102321436B1 (en) | 2019-08-05 | 2019-10-01 | Server and method for providing information of p2p finance banking and system thereof |
KR1020190143805A KR102324155B1 (en) | 2019-08-05 | 2019-11-11 | Method and apparatus for autonomous guarantee verification for p2p loan service based on blockchain |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190121495A KR102321437B1 (en) | 2019-08-05 | 2019-10-01 | P2p loan server, method and computer program through relationship banking based on machine learning |
KR1020190121493A KR102321436B1 (en) | 2019-08-05 | 2019-10-01 | Server and method for providing information of p2p finance banking and system thereof |
Country Status (1)
Country | Link |
---|---|
KR (3) | KR102321437B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102527162B1 (en) * | 2021-11-17 | 2023-04-28 | 이동주 | Method and server for Loan Participation based on block chain network |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230074868A (en) | 2021-11-22 | 2023-05-31 | 박혜원 | Method and system for paying daily labor expenses on the workers' labor office application platform |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140134567A (en) * | 2013-05-14 | 2014-11-24 | 주식회사 코스콤 | System for managing electronic contract and method therefor |
KR101857223B1 (en) * | 2017-11-13 | 2018-05-11 | 주식회사 온더 | Method and system for user identification based block chain token |
KR20180079806A (en) * | 2017-01-02 | 2018-07-11 | 주식회사 코인플러그 | Method for authenticating a user without a face-to-face contact by using mobile id based on blockchain and merkle tree structure related thereto, and terminal and server using the same |
KR20190031989A (en) * | 2017-09-19 | 2019-03-27 | 주식회사 케이티 | System and method for processing electronic contracts based on blockchain |
KR20190089506A (en) * | 2018-01-23 | 2019-07-31 | 박동화 | System and method for e-contract with shared and distributed ledger coupled with outer storage devices |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160076583A (en) * | 2014-12-23 | 2016-07-01 | 제이티친애저축은행 주식회사 | Instant loan service method using the wired and wireless web service web services |
KR20180060317A (en) * | 2016-11-28 | 2018-06-07 | 한국전력공사 | Apparatus and method for predicting electricity demand based on deep neural networks |
KR101955546B1 (en) * | 2017-04-24 | 2019-03-07 | (주)투게더앱스 | Lending Meditation Platform System and Credit Estimating Apparatus and Method thereof |
KR101913591B1 (en) * | 2017-08-25 | 2018-12-28 | 경희대학교 산학협력단 | Method for recommending financial product using user data |
KR101980307B1 (en) * | 2018-04-19 | 2019-05-20 | 김시내 | Peer To Peer Investment Mediating System |
KR20180074650A (en) * | 2018-06-27 | 2018-07-03 | 이여송 | P2P loan service system of online personal bank to provide the cloud funding function from a number of investors |
KR101909503B1 (en) * | 2018-07-20 | 2018-10-18 | 주식회사 에잇퍼센트 | Method and server for automatic diversified investment |
KR101975448B1 (en) * | 2018-08-14 | 2019-05-08 | (주) 에이투연구소 | Evaluation System and Method for Big Data Based Commodity Investment Recommendation Algorithms Using Artificial Intelligence |
-
2019
- 2019-10-01 KR KR1020190121495A patent/KR102321437B1/en active IP Right Grant
- 2019-10-01 KR KR1020190121493A patent/KR102321436B1/en active IP Right Grant
- 2019-11-11 KR KR1020190143805A patent/KR102324155B1/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140134567A (en) * | 2013-05-14 | 2014-11-24 | 주식회사 코스콤 | System for managing electronic contract and method therefor |
KR20180079806A (en) * | 2017-01-02 | 2018-07-11 | 주식회사 코인플러그 | Method for authenticating a user without a face-to-face contact by using mobile id based on blockchain and merkle tree structure related thereto, and terminal and server using the same |
KR20190031989A (en) * | 2017-09-19 | 2019-03-27 | 주식회사 케이티 | System and method for processing electronic contracts based on blockchain |
KR101857223B1 (en) * | 2017-11-13 | 2018-05-11 | 주식회사 온더 | Method and system for user identification based block chain token |
KR20190089506A (en) * | 2018-01-23 | 2019-07-31 | 박동화 | System and method for e-contract with shared and distributed ledger coupled with outer storage devices |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102527162B1 (en) * | 2021-11-17 | 2023-04-28 | 이동주 | Method and server for Loan Participation based on block chain network |
Also Published As
Publication number | Publication date |
---|---|
KR102324155B1 (en) | 2021-11-10 |
KR20210017956A (en) | 2021-02-17 |
KR102321436B1 (en) | 2021-11-03 |
KR102321437B1 (en) | 2021-11-03 |
KR20210017957A (en) | 2021-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11720887B1 (en) | System, method and program product for depositing and withdrawing stable value digital assets in exchange for fiat | |
JP6697008B2 (en) | System and method for updating distributed ledger based on partial authorization of transaction | |
CN108418680B (en) | Block chain key recovery method and medium based on secure multi-party computing technology | |
US20200126075A1 (en) | Confidential transaction auditing using an authenticated data structure | |
US20200143337A1 (en) | Secure computer network-based platform | |
US20200051041A1 (en) | System and method for arbitrating a blockchain transaction | |
EP3396612A1 (en) | Method and system for creating a user identity | |
EP3912118A1 (en) | Identity management, smart contract generator, and blockchain mediating system, and related methods | |
JP2020071617A (en) | Transaction method, program, verifying apparatus and creating method | |
KR102250998B1 (en) | System for controlling multi signature secure account | |
CN112037068A (en) | Resource transfer method, system, device, computer equipment and storage medium | |
CN111640014A (en) | Receivable and debt right financing system and method based on block chain technology | |
CN101140648A (en) | Method for bank bill online authorisation and off line trading | |
CN111369730B (en) | Voting processing method and device based on block chain | |
WO2019144156A1 (en) | Method and apparatus for a consumer controlled, decentralized financial profile | |
KR20190132047A (en) | Method for Providing Service Platform based on Blockchain by using Smart Contract | |
KR20190132159A (en) | Method for Providing Cryptocurrency Trading Platform based on Blockchain by using Smart Contract | |
JPWO2018088475A1 (en) | Electronic authentication method and program | |
KR20190132054A (en) | Method for Providing Cryptocurrency Trading Platform by using Smart Contract based on Blockchain | |
CN112232828A (en) | Power grid data transaction method and system | |
KR102324155B1 (en) | Method and apparatus for autonomous guarantee verification for p2p loan service based on blockchain | |
KR101941625B1 (en) | System for SNS finetech using authentication based selecting and method for operating the same | |
KR20190132160A (en) | Method for Providing Cryptocurrency Trading Platform by using Smart Contract | |
CN112070498A (en) | Ownership processing system and method | |
KR102195830B1 (en) | System for security enforced crypto currency based on block chain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |