Categories
Gambaru News

Tactic muốn phát minh lại phần mềm kế toán cho thời đại web3

Tactic, một công ty khởi nghiệp giúp các doanh nghiệp quản lý và đơn giản hóa hoạt động tài chính tiền điện tử (cryptocurrency finance), đang bất ngờ nổi lên với 2,6 triệu đô la vốn đầu tư.

Tactic - Startup phần mềm kế toán dành cho doanh nghiệp có giao dịch bằng tiền điện tử
Tactic – Startup phần mềm kế toán dành cho doanh nghiệp có giao dịch bằng tiền điện tử

Các nhà sáng lập của Fund và công ty khởi nghiệp tự động hóa tài chính Ramp đã đồng dẫn đầu việc gọi vốn cho Tactic, một công ty có 8 thành viên trụ sở tại Thành phố New York. Elad Gil và người đồng sáng lập Figma, Dylan Field cũng tham gia tài trợ.

Giám đốc điều hành Ann Jaskiw thành lập Tactic sau khi phát hiện rằng những nhà sáng lập trong lĩnh vực web3 đang xử lý hoạt động kế toán của mình trên bảng tính excel. Cô kết luận rằng các nhà cung cấp phần mềm kế toán hiện tại “không được xây dựng để xử lý các giao dịch tiền điện tử”.

Jaskiw cho biết, cốt lõi của sản phẩm Tactic là giúp giám đốc tài chính hoặc người đứng đầu bộ phận tài chính trả lời câu hỏi “Tiền đã đi đâu?” vào cuối một quý.

Jaskiw giải thích: “Ngay bây giờ đối với hầu hết các chuyên gia tài chính, dấu vết kiểm tra các giao dịch tiền điện tử của họ là một giao dịch ghi nợ từ Ngân hàng Thung lũng Silicon hoặc bất kỳ ngân hàng nào, vào một sàn giao dịch tập trung như Coinbase. Token rời khỏi vị trí trung tâm đó, và sau đó nó trở thành một dấu chấm hỏi lớn. Những gì chúng tôi thấy là mọi người đang dành nhiều thời gian cho các bảng tính thủ công, cố gắng theo dõi những giao dịch nào xảy ra và cố gắng tính toán lãi và lỗ. Hiện tại nó cực kỳ cồng kềnh.”

Nói chung, các công ty tương tác với blockchain phải vật lộn để hiểu được hoạt động phân mảnh của họ, theo Jaskiw.

“Họ có xu hướng quản lý nhiều ví trên nhiều blockchain khác nhau và giữ tiền trong các sàn giao dịch tập trung hoặc các giải pháp tự lưu ký như Gnosis Safe”.

Đây là lúc Tactic xuất hiện.

Tactic giải quyết vấn đề tính toán cho việc nắm giữ tiền điện tử và hoạt động trên chuỗi của một doanh nghiệp bằng cách tổng hợp dữ liệu trên các nguồn khác nhau để cung cấp cho các doanh nghiệp “cái nhìn đầy đủ về số dư và hoạt động của họ”.

Jaskiw cho biết, phần mềm giúp các công ty tự động phân loại các giao dịch và áp dụng logic kế toán như tính lãi / lỗ và các sự kiện chịu thuế. Sau đó, kế toán có thể điều chỉnh sổ cái phụ tiền điện tử (crypto-subledger) của doanh nghiệp với phần mềm kế toán truyền thống như QuickBooks.

Jaskiw nói:

“Không quan trọng họ đang xây dựng cái gì, đó có thể là bất kỳ giao dịch trực tuyến nào, nhưng không có dấu vết kiểm tra cố định nào nếu bạn là một công ty tiền điện tử. Vì vậy, nếu bạn có một tài khoản ngân hàng thông thường, bạn có tất cả các dòng tiền vào và ra của mình và bạn có thể có nhiều hơn một tài khoản ngân hàng nhưng nó thường ở một vị trí duy nhất – trong khi các giao dịch tiền điện tử có thể trải qua hàng chục ví hoặc sản phẩm khác nhau. “

Sau khi nói chuyện với hàng trăm công ty, Tactic nhận thấy rằng tài chính phi tập trung hoặc giao dịch “DeFi” là vấn đề nan giải nhất.

Ví dụ: một lần tương tác với hợp đồng thông minh có thể tạo ra hàng trăm “giao dịch lồng ghép”, tất cả đều cần được chia nhỏ cho mục đích kế toán.

Tactic đã hợp tác với các công ty kế toán để giúp diễn giải các hướng dẫn kế toán cho các hoạt động cụ thể của DeFi như đặt cọc, đúc NFT và airdrop.

Kể từ khi ra mắt vào năm 2021, Tactic đã thu hút được “hàng chục” khách hàng, từ các công ty khởi nghiệp giai đoạn đầu đến các doanh nghiệp hàng tỷ đô la trong các ngành bao gồm NFT, giao thức và DeFi. Công ty đang thiết kế đề xuất của mình để làm việc với các doanh nghiệp có “hàng trăm nghìn” giao dịch mỗi tháng.

Jaskiw nói:

“Đây là nỗi đau cho bất kỳ ai. Một tổ chức càng lớn mạnh thì vấn đề càng trở nên phức tạp và tồi tệ hơn. Vì vậy, đó là nơi chúng tôi thấy thú vị nhất về nó”.

Bà cũng tin rằng một quan niệm sai lầm phổ biến về không gian tiền điện tử là rất nhiều người đang cố gắng tránh các quy định. Jaskiw cho biết, Tactic đã cho thấy điều ngược lại là đúng.

“Rất nhiều công ty, đặc biệt là tập đoàn tư nhân ở Mỹ, đang thực sự cố gắng làm điều đúng đắn, cố gắng làm theo các quy tắc và quy định. Họ chỉ đang thiếu công cụ và hướng dẫn để có thể làm điều đó một cách hiệu quả.”

Tactic
Tactic

John Dempsey, Phó giám đốc chiến lược và vận hành của Tactic, nói rằng Tactic giúp các doanh nghiệp giao dịch bằng tiền điện tử “dễ dàng”, “rằng họ có thể quản lý hoạt động tài chính của mình một cách rõ ràng và đúng quy định”. Dempsey là cựu Phó Giám đốc sản phẩm của công ty Chainalysis, một công ty phân tích blockchain vào tháng 3 năm ngoái đã thành công với khoản tài trợ Series D trị giá 100 triệu đô la, tăng gấp đôi giá trị của mình lên hơn 2 tỷ đô la.

Nhưng không chỉ các công ty web3 đang vật lộn với vấn đề này.

Theo Scott Orn, COO của Kruze Consulting, một công ty CPA phục vụ các công ty khởi nghiệp, tiền điện tử đang “thâm nhập nhanh chóng” ngay cả các công ty không phải tiền điện tử.

“Crypto đang nhanh chóng trở thành một phần của cơ sở hạ tầng tài chính của nhiều công ty khởi nghiệp. Chúng tôi nhận thấy 5% đến 10% các công ty SaaS phi crypto tham gia vào các giao dịch tiền điện tử – đó là những công ty SaaS không liên quan gì đến tiền điện tử. Hai năm trước, hầu như không có công ty phi crypto nào sử dụng tiền điện tử – đó thực sự là tốc độ tăng trưởng đáng kinh ngạc”.

Ông nói thêm, tiền điện tử mang tới một loạt các vấn đề kế toán cần được giải quyết bằng phần mềm, bao gồm các giao dịch đặt chỗ một cách chính xác vào sổ cái chung, ghi lại thông tin kế hoạch thuế và xử lý các giao dịch do hợp đồng thông minh tạo.

Orn chỉ ra rằng các giao dịch tiền điện tử có thể tạo ra các sự kiện chịu thuế.

Ví dụ: một công ty có hợp đồng và được thanh toán một số lượng mã thông báo tiền điện tử (crypto token) nhất định và nếu những mã token đó tăng giá trị trước khi công ty thực sự được thanh toán, điều đó có thể dẫn đến “đột biến doanh thu”.

Orn nói thêm:

“Điều này có thể thúc đẩy một công ty khởi nghiệp có lãi, đồng nghĩa với việc nợ thuế. Và việc bán các tài sản tiền điện tử đã tăng giá trị sẽ tạo ra một khoản lợi nhuận chịu thuế. Chúng tôi đã thấy cả hai tình huống này và việc theo dõi tất cả theo cách thủ công là rất khó trong tình huống có khối lượng lớn. “

Các nhà sáng lập Fund Principal Leigh, Marie Braswell nói rằng sản phẩm của Tactic “đã tiết kiệm nhiều ngày làm việc cho các nhóm kế toán tiền điện tử”.

Chúng tôi tin rằng Tactic có tiềm năng trở thành một anh lớn khi nhiều công ty chuyển sang làm web3” cô nói thêm.

Eric Glyman, Giám đốc điều hành và đồng sáng lập của Ramp, nói rằng công ty của ông đầu tư vào Tactic dựa trên niềm tin rằng cần có “các giải pháp trực quan, đơn giản cho các doanh nghiệp giao dịch bằng tiền điện tử”.

Ông nói: “Chúng tôi dự đoán rằng nhu cầu sẽ tăng trong tương lai”.

Glyman cũng xem điều mà ông mô tả là “sự liên kết chiến lược” với tầm nhìn dài hạn của Ramp (Lưu ý: Công ty đã đảm bảo nguồn vốn của chính mình vào đầu năm nay với mức định giá 8,1 tỷ đô la).

Ông nói: “Tactic được xây dựng với mục đích tiết kiệm thời gian cho các doanh nghiệp và đặc biệt là nền tảng này hoạt động cho các công ty có khối lượng giao dịch cao. Và mọi thứ chúng tôi làm tại Ramp đều nhằm hỗ trợ việc tiết kiệm thời gian và tiền bạc cho doanh nghiệp.”

Tactic có kế hoạch sử dụng nguồn vốn mới để xây dựng sản phẩm và đội ngũ.

Jaskiw nói: “Chúng tôi không phải thực hiện bất kỳ hoạt động tiếp thị bên ngoài hoặc chạy quảng cáo nào. Chúng tôi đã nhận được rất nhiều sự phấn khích từ bên trong.”

Nguồn: TechCrunch

Categories
Dev's Corner

Cách tương tác với Smart Contract từ một web app

Juan Cruz Martinez sẽ hướng dẫn chúng ta tạo một smart contract (hợp đồng thông minh) nhỏ để lưu trữ và truy xuất dữ liệu trên Ethereum blockchain và tạo một web app cho phép truy cập và thay đổi dữ liệu trên smart contract này.

Hãy thực hành cùng Gambaru nhé!

Smart Contract

Đầu tiên, tôi sẽ trình bày về smart contract mà ta sẽ sử dụng để xây dựng các ứng dụng web.

Vì bài viết tập trung vào việc liên kết JavaScript với blockchain, nên tôi tạo contract càng đơn giản càng tốt:

Tạo một Smart Contract đơn giản
Tạo một Smart Contract đơn giản. Xem code gốc ở đây

Hợp đồng CoolNumberContract chứa một biến trên blockchain được gọi là coolNumber với giá trị ban đầu là 10.

Biến này là public, nghĩa là ta có thể truy cập giá trị của nó từ blockchain mà không cần tạo hàm getter.

Ngoài ra, contract này chứa một hàm publicsetCoolNumber, sẽ thay đổi giá trị của biến trên blockchain.

Điều quan trọng cần nhớ ở đây là bất kỳ thay đổi nào trong dữ liệu blockchain đều cần được thể hiện bằng một giao dịch.

Có nghĩa là việc gọi phương thức setCoolNumber sẽ yêu cầu một giao dịch và giao dịch đó sẽ có phí gas đi kèm.

Hãy triển khai hợp đồng trên một test network trước khi tiếp tục.

Thiết lập project và dependency

Để tương tác với bất kỳ Ethereum blockchain nào từ JavaScript, bạn sẽ cần một library.

Trong trường hợp này, hãy sử dụng web3 https://web3js.readthedocs.io/en/v1.3.0/

Web3 sẽ cho phép tương tác với bất kỳ Ethereum network nào thông qua MetaMask hoặc provider của web3 như Ganache.

Hãy bắt đầu một project mới. Tôi sẽ sử dụng JavaScript HTML, nhưng mọi người có thể sử dụng bất kỳ framework nào mình muốn như React hoặc Vue.

Tất cả code sẽ đi vào một file là index.html và hãy bắt đầu với cấu trúc sau:

Thiết lập project và dependency
Thiết lập project và dependency. Xem code gốc ở đây

Hãy xem thử thẻ body.

Đây là một giao diện người dùng đơn giản với hai button và một khoảng biểu thị trạng thái.

Cả hai button đều gọi các hàm JavaScript mà hiện tại vẫn chưa được định nghĩa.

Trên thẻ head, thẻ quan trọng là script ta đang import. Đó là thành phần phụ thuộc vào web3.

Hãy thêm thành phần phụ thuộc này vào code như tôi đã làm hoặc nếu đang sử dụng một framework, chỉ cần import package này với:

Import Package
Import Package

Nếu chưa cài đặt library, bạn có thể thông qua NPM:

Cài thông qua NPM
Cài thông qua NPM

Cuối cùng, trước khi tiếp tục, lời khuyên là hãy cài đặt tiện ích mở rộng MetaMask.

Nếu muốn sử dụng bất kỳ provider nào khác, bạn có thể phải thay đổi các phần của code cho phù hợp, vì các sample được cung cấp sử dụng provider web3 được MetaMask đưa vào.

Kết nối web app với Ethereum Blockchain

Khi cấu trúc cơ bản và các thành phần phụ thuộc sẵn sàng, ta có thể thêm code để kết nối ứng dụng với blockchain.

Bên trong script tag ở body, hãy thêm:

Kết nối web app với Ethereum Blockchain
Kết nối web app với Ethereum Blockchain. Xem code gốc ở đây

Các đoạn code trên khá đơn giản ngoại trừ hàm loadWeb3.

Chức năng này chịu trách nhiệm thiết lập kết nối và cấp quyền tương tác với blockchain.

Để làm việc với smart contract này, ta sẽ cần một instance Web3 mới. Khi tạo instance này, cần chỉ định provider ta muốn sử dụng.

Vì đang sử dụng MetaMask làm proxy nên hãy dùng provider window.ethereum được đưa vào bởi tiện ích mở rộng MetaMask.

Khi truy cập trình duyệt và tải trang (bằng file hoặc trình duyệt web), ta sẽ thấy luồng ủy quyền MetaMask như sau:

Cấp quyền kết nối cho app thông qua MetaMask
Cấp quyền kết nối cho app thông qua MetaMask

Hãy nhấn Next Connect.

Truy cập vào smart contract

Đến lúc này, code đã có quyền truy cập để tương tác với blockchain.

Tạo một chức năng mới để tạo một contract instance phù hợp với giao diện contract.

Tạo Contract Instance
Tạo Contract Instance

Để có được một instance của bất kỳ contract nào trên blockchain, tất cả những gì chúng ta cần là: thông số ABI của contract và địa chỉ contract, cả hai đều có thể trích xuất từ ​​Remix.

Để có thông số kỹ thuật ABI của contract, hãy đến Remix trên tab Compile. Compile và nhấp vào ABI.

Sao chép ABI specification của contract
Sao chép ABI specification của contract

Nút này sẽ sao chép thông số ABI cho contract dưới dạng một JSON array trên clipboard mà ta có thể sử dụng trực tiếp như một phần của tham số đầu tiên.

Tham số thứ hai là địa chỉ contract đã triển khai, có thể lấy từ Remix tại thời điểm triển khai hoặc Etherscan.

Sao chép địa chỉ contract từ Remix
Sao chép địa chỉ contract từ Remix
Sao chép địa chỉ contract từ Remix
Sao chép địa chỉ contract từ Remix

Code chức năng hoàn chỉnh cho contract này sẽ như sau:

Code chức năng hoàn chỉnh cho Contract
Code chức năng hoàn chỉnh cho Contract. Xem code gốc ở đây

Sau khi hoàn tất, ta có thể chỉ cần gọi loadContract từ hàm loader:

Gọi loadcontract từ hàm loader
Gọi loadcontract từ hàm loader

Đọc các giá trị từ smart contract

Nay ta đã sẵn sàng để bắt đầu gọi các chức năng của smart contract và sẽ bắt đầu bằng cách lấy coolNumber từ contract này.

Có thể lấy dữ liệu từ contract rất nhanh nhờ web3. Đây là một ví dụ để lấy giá trị của biến public coolNumber:

Lấy giá trị của biến public coolNumber
Lấy giá trị của biến public coolNumber. Xem code gốc ở đây

Siêu dễ đúng không?

Sử dụng instance contract từ phần trước, hãy lấy các phương thức và gọi một hàm với tên biến (đây là getter đã được đề cập ở phần đầu), và cuối cùng, sử dụng lệnh call để bắt đầu yêu cầu từ xa.

Cập nhật các giá trị vào smart contract

Cuối cùng, cần đảm bảo rằng ta cũng có thể giao dịch với smart contract.

Do đó, hãy hiển thị một instance bằng cách truy cập hàm setter để thay đổi coolNumber được lưu trữ trong contract.

Chức năng change sẽ chỉ định một số ngẫu nhiên mới và lưu nó trên blockchain:

Truy cập hàm setter để thay đổi coolNumber
Truy cập hàm setter để thay đổi coolNumber. Xem code gốc ở đây

Có hai điều cần chú ý:

  • Đầu tiên, chúng ta đề cập đến một hàm getCurrentAccount() hiện chưa được định nghĩa. Ta sẽ làm việc này sau.
  • Thứ hai là cách gọi setter. Hãy chú ý đến dòng gọi phương thức setCoolNumber từ contract, nó trông hơi khác so với những gì đã làm cho caller:
Cách gọi setter
Cách gọi setter

Thay vì sử dụng phương thức call, ta đang sử dụng phương thức send. Ta cần xác định tài khoản người gửi. Tại sao? Phải cần một giao dịch để thay đổi các giá trị trên blockchain. Như đã nói, một giao dịch yêu cầu tài khoản từ và đến phải hợp lệ – từ người khởi tạo giao dịch và trong trường hợp này, là địa chỉ của smart contract này.

Có thể sử dụng bất kỳ tài khoản nào làm từ giá trị không? Không! Đó phải là tài khoản bạn có quyền truy cập (và trong trường hợp này, tài khoản được đăng ký trên ví MetaMask của bạn), vì bạn sẽ cần ủy quyền giao dịch và xác nhận hóa đơn tiền gas.

Vấn đề đã được giải quyết, hãy xây dựng phương thức getCurrentAccount():

Xây dựng phương thức getCurrentAccountxây dựng phương thức getCurrentAccount
Xây dựng phương thức getCurrentAccount

Web3 thực sự tuyệt vời. Mọi người có thể tương tác với blockchain và ví của mình, vì vậy có thể thông qua Web3 để yêu cầu thông tin về các tài khoản đã đăng ký trên ví. Trong trường hợp này, chỉ cần lấy tất cả và sử dụng tài khoản đầu tiên để thực hiện các giao dịch.

Vận dụng những gì đã học

Tôi đã tải code lên GitHub gist để bạn so sánh và tham khảo. Hãy thử xây dựng dự án nhỏ nhưng thú vị này nào!

Application Flow
Application Flow

Nếu thành công, bạn hãy comment phía dưới cho Gambaru biết nhé!

Theo Juan Cruz Martinez