Blockchain (Hyperledger Fabric)/작업 중인 Solution

Hyperledger Composer Logic(Transaction 수행) Ver. 0.0.2

김야키 2019. 2. 27. 18:17

Logic(Transaction 수행 작업) 설정


작성일자 2019.02.27

Ver 0.0.2

/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; /** * @param {org.example.mynetwork.SendMoney} sendMoney * @transaction */

async function sendMoney(tx) { const normal = tx.normal;            // 회비를 납부하는 사용자(일반) 정보 const accoutant = tx.accoutant;    // 회비를 회수하는 사용자(회계) 정보 const groupPay = tx.groupPay;     // 회비를 납부하는 그룹의 정보 const norGroup = normal.groupName.toString();            // 사용자(일반)의 groupName const accGroup = accoutant.groupName.toString();         // 사용자(회계)의 groupName const allGroupName = groupPay.groupName.toString();  // 회비를 납부하는 그룹의 groupName const Accoutant = accoutant.account.toString();    // 사용자(회계)의 account 정보

// 회비를 납부하는 groupName과

// 납부자로 입력된 사용자의 groupName과

// 회계로 입력된 사용자의 groupName을 비교 if( norGroup == accGroup && accGroup == allGroupName && allGroupName == norGroup ) {

// 납부하는 사용자의 state가 true인지 확인 if(normal.state){

// 회계로 입력된 사용자의 권한이 'accoutant'인지 확인 if(Accoutant == "accoutant"){


// 납부한 회원의 상태를 false로 수정 normal.state = false;


// 납부가 완료된 회원의 수를 1 카운트 groupPay.participantNum += 1;


// 이전에 있던 납부 금액에 회비의 금액을 추가 groupPay.nowPay += groupPay.pay;

                // 납부한 회원의 state정보 업데이트 const participantRegistry = await getParticipantRegistry('org.example.mynetworkGroup'); await participantRegistry.update(tx.normal);

                // GroupPay의 nowPay의 정보를 업데이트 const assetRegistry = await getAssetRegistry('org.example.mynetwork.GroupPay'); await assetRegistry.update(tx.groupPay);

                // 납부 완료 return "Success"; }

// 납부하는 인원이 회계가 아닌 경우 return "Please confirm your accoutant"; }

// 2중 납부가 발생하는 경우 return "I already paid my dues."; }

// 학과 정보가 일치하지 않음 return "Group is not matching"; }